我有一个索引矩阵和一个值向量,它与矩阵中的行数一样长 . 我有一个输出向量,其长度与值相同,但全部为零 .
对于矩阵中位置(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 回答