0

私は非常に巨大なデータフレームを持っています(約700列と4,00,000行)。次の例:

           "samp1"             "samp2"              "samp3"
"ct1"   3.45909539741409    4.16162745114877    4.28378657903742
"ct2"   2.45516883029741    2.64529479763739    2.62023669114738
"ct3"   -1.53506396613939   -1.53318358856732   -1.2235498333358
"ct4"   2.54561049516449    1.91067140586626    2.6860636959124
"ct5"   1.08270893850391    0.847112473835081   0.90241673852809
"ct6"   -1.49057768051391   -1.09321836721649   -1.11635564230449
"ct7"   -0.82888593769947   -0.533641693674542  -0.339345700770896

すべての列には、すべての数値セル(「a」としましょう)にlog2値が含まれており、次の数式を使用して、それらすべてを通常の値(「b」としましょう)に変換したいと思います。

b = 2 ^ a / [(2 ^ a)+ 1]

したがって、結果のファイルは上記のようになりますが、変換されたすべての値がaではなくbになります。

誰かがこれで私を助けることができますか?前もって感謝します。

4

2 に答える 2

2

いくつかのデータを作成する

a <- matrix(runif(21), ncol=3,
            dimnames=list(paste0("ct", 1:7), paste0("samp", 1:3)))

a
         samp1     samp2      samp3
ct1 0.36856468 0.1969006 0.21410103
ct2 0.80894310 0.4402108 0.96686681
ct3 0.52169299 0.1410873 0.35899306
ct4 0.75243588 0.5432110 0.85099247
ct5 0.77734048 0.5657070 0.33521023
ct6 0.73011232 0.1539275 0.08615577
ct7 0.08505216 0.4905622 0.13415698

変身:

b <- 2^a / ((2^a) + 1)

b
        samp1     samp2     samp3
ct1 0.5635223 0.5340674 0.5370329
ct2 0.6366183 0.5756963 0.6615437
ct3 0.5894301 0.5244291 0.5618897
ct4 0.6275099 0.5930347 0.6433337
ct5 0.6315359 0.5967925 0.5578276
ct6 0.6238860 0.5266483 0.5149252
ct7 0.5147341 0.5841982 0.5232309
于 2013-01-15T14:16:07.857 に答える
2

Andrie がコメントで言ったように、数式をデータ フレームに適用するだけです。そして、それを行列に変換すると、物事がより速く実行されます. そんな感じ:

DATA <- as.matrix(read.table(text = "samp1             samp2              samp3
3.45909539741409    4.16162745114877    4.28378657903742
2.45516883029741    2.64529479763739    2.62023669114738
-1.53506396613939   -1.53318358856732   -1.2235498333358
2.54561049516449    1.91067140586626    2.6860636959124
1.08270893850391    0.847112473835081   0.90241673852809
-1.49057768051391   -1.09321836721649   -1.11635564230449
-0.82888593769947   -0.533641693674542  -0.339345700770896", header = TRUE))

DATAprocessed <- 2^DATA/((2^DATA) + 1)
于 2013-01-15T14:14:26.220 に答える