【发布时间】:2016-11-25 10:59:00
【问题描述】:
我有一个索引矩阵和一个与矩阵中的行数一样长的值向量。我有一个与值长度相同但全为零的输出向量。
对于矩阵中位置 (i,j) 的每个条目 c,我需要将 values[i] 添加到 output[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]
}
}
它可以工作,但速度很慢。对于一个有很多行的矩阵(最少一百万)和一个长的“值”向量,我将重复执行此操作。
有什么办法可以加快速度吗?我犯了什么明显的错误吗?
谢谢
编辑:示例和代码中有错误。
【问题讨论】: