通过向量索引矩阵

时间:2016-05-07 23:20:50

标签: r

m = matrix(1:10, nrow = 5, ncol = 2)
y = c(1,2,2,1,1)

我想要一个v元素为i的向量m[i,y[i]]

我认为m[,y]会这样做,但这显然是错误的。

2 个答案:

答案 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