2013-04-08 36 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欄