从每个矩阵列中选择一个元素

时间:2014-05-25 14:51:49

标签: r matrix indexing

我有一个矩阵m和一个向量v。向量指定每个m列中我需要的元素。 v的长度等于m中的列数。我试过apply(m,2, FUN)但是没能找到合适的功能去做。我的数据和载体定义如下。

set.seed(12)
m <- matrix(sample(1:100,28),4)
v <- c(3,2,2,3,1,4,3)

我想要的结果是向量vv

vv <- c(93,4,1,23,39,82,85)

非常感谢帮助!

1 个答案:

答案 0 :(得分:1)

矩阵元素也可以通过2列矩阵索引。这样的矩阵确定要提取的元素(#row,#column)。 在你的情况下,这些是(3,1),(2,2),(2,3),(3,4)等,即(v [1],1),(v [2],2) , 等等。因此,这是一个解决方案:

set.seed(12)
m <- matrix(sample(1:100,28),4)
v <- c(3,2,2,3,1,4,3)

m[cbind(v,seq_along(v))]
## [1] 93  4  1 23 39 82 85