2017-02-15 54 views
1

我知道*应用函数比处理数据时循环更有效 - 但我正在努力为一个反复出现的情况这样做。就拿这个简单的例子:循环问题vs应用

对于这个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 ... 

我想简单地替换每个单元格的值指定的列2:用标准值6(即cellValue /总和(列))。

我觉得应该有一个很好的方式来使用*应用一些函数来做到这一点很好,但只能让它作为for循环工作。有人可以分享适当的语法!

for (i in 2:6) 
{ 
    myTNorm[, i] = myTNorm[, i]/sum(myTNorm[, i]) 
} 

谢谢!

+0

如果你的帖子看看周围的环路与*适用的问题,你会看到很多的评论,甚至完全的例子显示,*申请方法并不总是比'为'循环。对于你的问题,'myTNorm [,2:6] < - lapply(2:6,function(i)i/sum(i))'可能是标准的应用解决方案。 – lmo

+1

@Imo我认为第二部分应该是'lapply(myTNorm [,2:6],...)' – Shape

+0

@Shape你当然是对的。感谢您的支持。 – lmo

回答