gpt4 book ai didi

r - 在 R 中向量化一个简单的循环

转载 作者:行者123 更新时间:2023-12-01 22:46:10 25 4
gpt4 key购买 nike

我正在尝试改进我的代码,但有一项任务我无法对循环进行矢量化。我有 5 个稀疏矩阵,我必须在其中循环并将非空元素产生的 1x3 向量添加到另一个矩阵。在这个例子中,我只使用 1 个稀疏矩阵来保持简单。

m <- matrix(0, nrow = 3, ncol = 3)
m[1, 2] <- 5
m[3, 3] <- 8
n <- matrix(0, nrow=3, ncol=5)


for (i in 1:nrow(m)){
for (j in 1:ncol(m)){
if (!m[i,j]==0){
n[i, j:(j+2)] <- n[i, j:(j+2)] + rep(m[i, j], 3)
}
}
}

代码有效,但我感觉有更好的向量化函数解决方案。我尝试使用应用函数但失败了,因为新矩阵 n 具有与 m 相同的其他维度。

如果能在这里得到一些想法会很棒。

最佳答案

这是一个向量化的基础 R 解决方案:

  1. 创建要插入值的索引的序列。检查 ?sequence 以了解其背后的工作原理。
  2. 插入值
idx <- sequence(nvec = rep(3, length(m[m != 0])), from = which(m != 0), by = nrow(m))
n[idx] <- rep(m[m != 0], each = 3)
n

[,1] [,2] [,3] [,4] [,5]
[1,] 0 5 5 5 0
[2,] 0 0 0 0 0
[3,] 0 0 8 8 8

关于r - 在 R 中向量化一个简单的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75411804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com