m = matrix(1:10, nrow = 5, ncol = 2)
y = c(1,2,2,1,1)
我想要一个v
元素为i
的向量m[i,y[i]]
。
我认为m[,y]
会这样做,但这显然是错误的。
答案 0 :(得分:6)
您可以使用cbind()
创建用于索引的矩阵。
m[cbind(seq_along(y), y)]
# [1] 1 7 8 4 5
答案 1 :(得分:4)
此外,由于在这种特殊情况下我们选择行1, 2, ..., nrow(m)
,
diag(m[, y])
# [1] 1 7 8 4 5