【问题标题】:make for loop faster in R without parallalizing使R中的for循环更快而不会并行化
【发布时间】:2013-04-08 20:39:33
【问题描述】:

我有以下非常简单的循环操作,我需要从 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)
}

【问题讨论】:

  • 你说什么“很慢”?此外,避免在每次迭代时调用 print 应该会给您带来更好的性能。
  • (+1) @SachaPercot-Tétu 提及以避免打印。

标签: r loops optimization


【解决方案1】:

您应该为此使用矢量化的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 列

【讨论】:

    猜你喜欢
    • 2020-11-21
    • 2014-04-12
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 2015-11-07
    • 2018-10-31
    相关资源
    最近更新 更多