循环问题与应用

时间:2017-02-15 19:01:41

标签: r apply

我知道* 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])
}

谢谢!

1 个答案:

答案 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))