我知道* apply函数是一种比处理数据时循环更有效的方法 - 但是对于一种反复出现的情况我很难这样做。举个简单的例子:
对于此data.frame" myTNorm" ...
> str(myTNorm)
'data.frame': 4631 obs. of 12 variables:
$ nc101_code: chr "NC101_00003" "NC101_00004" "NC101_00005" "NC101_00006" ...
$ D2_01 : num 5.67e-04 5.17e-05 2.50e-04 8.79e-04 8.61e-06 ...
$ D2_02 : num 1.83e-04 1.26e-05 3.35e-04 5.05e-04 1.89e-05 ...
我想简单地用规范化的值(即cellValue / sum(column))替换指定列2:6的每个单元格的值。
我觉得应该有一个很好的方法来使用* apply和一些函数很好地完成这个,但只能让它作为for循环工作。有人可以分享正确的语法!
for ( i in 2:6 )
{
myTNorm[, i] = myTNorm[, i]/sum(myTNorm[, i])
}
谢谢!
答案 0 :(得分:0)
我建议您阅读这样一个好的教程:https://www.r-bloggers.com/using-apply-sapply-lapply-in-r/。或者,在此处提出问题之前,尝试找到类似的答案并调整自己的代码。
但是,您可以尝试:
apply(X = myTNorm[,2:6], MARGIN = 2, FUN = function(x) x/sum(x))