首页 文章

通过索引向向量添加值 - 提高速度

提问于
浏览
0

我有一个索引矩阵和一个值向量,它与矩阵中的行数一样长 . 我有一个输出向量,其长度与值相同,但全部为零 .

对于矩阵中位置(i,j)的每个条目c,我需要将值[i]添加到输出[c] - 也就是说,对于矩阵的每个条目,我必须找到输出向量的值索引并向其添加值条目向量中的数字,该条目向量由条目所在的矩阵所索引 .

例如,如果values = [1,2,3,4]且mx_indices是

[1,1,
2,2,
3,3
1,2]

那么输出应该是[6,8,6,0]

这是我尝试的简单R代码:

# Example: values has 10 entries, and we have 100 types to compute
mx_indices <- matrix(floor(runif(1000)*10), ncol = 10, nrow=100)
values <- 1:100
output <- rep(0,10)
for(i in 1:length(values)){
    for(j in mx_indices[i,]){
        output[j] <- output[j] + values[i]
    }
}

它有效,但速度很慢 . 我将重复这样做一个矩阵,它有很多行(50万是最低限度)和长'值'向量 .

有什么办法可以加快速度吗?我有没有明显的错误?

谢谢

编辑:我在示例和代码中有错误 .

1 回答

  • 1
    mx_indices <- matrix(sample(1:9, 1000, TRUE), ncol = 10, nrow=100)
    values <- 1:100
    
    rowSums(matrix(values[mx_indices], ncol=ncol(mx_indices)))
    

相关问题