在没有平行化的情况下,在R中使循环更快

时间:2013-04-08 11:59:13

标签: r loops optimization

我有以下非常简单的循环操作,我需要从1循环到50,000。虽然循环非常简单,但R的速度非常慢,所以我想知道是否有任何操作可以使它更快,但我不喜欢并行解决方案,因为我的计算机只有2个处理器,

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

1 个答案:

答案 0 :(得分: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.frame full3[, 879:912]的每一行的总和。该结果存储在第923列