2013-04-08 34 views
0

我有以下非常简单的循环操作,我需要循环从1到50,000。尽管循环非常简单,但它在R中非常缓慢,所以我想知道是否有任何操作可以使其更快,但我不喜欢并行解决方案,因为我的电脑只有2个处理器,因此我的计算机只有2个处理器,使循环更快R在没有parallalizing

full3 = fullData 
for(i in 1:dim(fullData)[1]) { 
    full3[i,923] <- sum(as.numeric(full3[i, 879:912])) 
    print(i) 
} 
+1

你叫什么“很慢”?同时避免在每次迭代中调用打印应该会给你更好的性能。 – zakinster 2013-04-08 12:06:06

+0

(+1)@ SachaPercot-Tétu提醒避免打印。 – Arun 2013-04-08 12:07:03

回答

4

你应该使用矢量化rowSums操作如下:

full3 <- fullData 
# a[, b] selects the entire column 'b' from data.frame 'a' 
full3[, 923] <- rowSums(as.numeric(full3[, 879:912])) 

应该这样做。 rowSums,好吧,计算子集的每一行的总和data.framefull3[, 879:912]。这个结果被存回第923栏