dist 是一个 nxn 的成本矩阵:
dist <-matrix(c(0,3.2,1.2,3.2,0,0.5,1.2,0.5,0),nrow=3,ncol=3)
v为长度为n的向量,其中向量的索引对应dist的行,向量中的值对应dist的列
v <- c(2,2,3)
我想总结这样的成本:
cost <- 0
for(i in 1:length(v)){
cost <- dist[i,v[i]] + cost
}
但这似乎笨拙而缓慢。在没有 for 循环的情况下这样做的技巧是什么? for 循环是否没有利用一些神奇的 R 替代方案?请提出建议!
最佳答案
我们需要cbind
使用行索引提取值和 sum
sum(dist[cbind(1:nrow(dist), v)])
关于r - 避免矩阵索引中的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49383524/