[英]how to apply a given formula to a whole dataframe in R?
我有一个非常大的数据框(大约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
所有列均在每个数字单元格中包含log2值(让我们说“ a”),我希望将它们全部转换为正常值(让我们说“ b”),并具有以下公式:
b = 2 ^ a / [(2 ^ a)+1]
因此,我生成的文件应该与上面类似,但所有转换后的值都为b,而不是a。
谁能帮我这个 ? 提前致谢。
正如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)
创建一些数据
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.