r - 在 R 中使用向量代替 for 循环

标签 r for-loop vectorization

我有一长串代码,并试图通过删除 for 循环来加快速度。据我了解,当您有多个嵌套循环时,它会减慢您的代码速度。我的原始代码包含 3 个循环,分别运行了 598、687 和 44 次迭代。跑了大约15分钟。我使用此代码来显示我正在运行的某些模型的输出,等待 15 分钟是 Not Acceptable 。我在摆脱其中一个循环时遇到了麻烦。我正在尝试使用向量,但它运行不正确。让我们看看前 10 次迭代。

#data
flows=c(-0.088227, 0.73024, 0.39683, 1.1165, 1.0802, 0.22345, 0.78272, 0.91673, 0.53052, 0.13852)
cols=c(31, 31, 30, 30, 30, 30, 31, 31, 31, 31)
rows=c(3, 4, 4, 5, 6, 7, 7, 8, 9, 10)
dataset=matrix(0,33,44)
for (i in 1:10){dataset[rows[i],cols[i]]<-flows[i]+dataset[rows[i],cols[i]]}

#And this is my alternative(Not working)
dataset=matrix(0,33,44)
NoR=10
dataset[rows[1:NoR],cols[1:NoR]]<-flows[1:NoR]+dataset[rows[1:NoR],cols[1:NoR]]

请在此处查看问题。不知何故,列显示相同的行信息。 我在这里缺少什么?为什么第二个代码不能正确运行?

最佳答案

要帮助解决您真正的潜在问题可能有点困难,因为我猜我们在这里只看到您代码的一小段。但我想也许你正在寻找这样的东西:

flow_mat <- matrix(0,33,34)
flow_mat[(cols - 1) * 33 + rows] <- flows

请记住,矩阵只是具有维度属性的向量。因此,您可以像向量一样对它们进行索引,想象索引从“左上角”开始并按列环绕。

关于r - 在 R 中使用向量代替 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20010819/

相关文章:

r - 条件列创建

r - 将连续 NA 减少到单个 NA 的最佳方法

javascript - 循环并组合每两个项目

python - Numpy 向量化 : Find intersection between list and list of lists

Numpy 矩阵乘法与自定义点积

r - 在 ggplot 中添加趋势线作为附加图例

r - 为 R 最新 R 版本安装 quantstrat ()

for 循环中的 node.js 回调

javascript - 如何使用 for 循环在 React 中的 map 上渲染标记?

python - 这种修复插值可以在 Python 中变得更快吗?