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替代品吗?建议请!
答案 0 :(得分:4)
我们需要cbind
使用行索引来提取值并sum
sum(dist[cbind(1:nrow(dist), v)])