如何使用行索引和列索引的向量从数据框或矩阵中提取特定值?

时间:2018-09-03 01:04:37

标签: r dataframe matrix

假设您具有以下矩阵:

mat <- matrix(1:12, nrow = 3, ncol = 4)
print(mat)
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

您希望从具有以下行和列索引的矩阵中提取值:

rowind <- c(2,3,1)
colind <- c(4,4,1)

所以我正在寻找值11(第2行,第4列),12(第3行,第4列)和1(第1行,第1列)。

如果我尝试通过以下方式将列和行向量传递到矩阵中:

mat[rowind, colind]

我得到一个新的矩阵,其中包括rowind和colind的所有排列:

     [,1] [,2] [,3]
[1,]   11   11    2
[2,]   12   12    3
[3,]   10   10    1

我该如何获取仅与特定行和列组合有关的值?我考虑过使用for循环,但是考虑到矩阵和索引向量很大,我觉得这会不必要地变慢,并且很可能有更好的方法。

1 个答案:

答案 0 :(得分:0)

我们可以cbind索引来提取值

mat[cbind(rowind, colind)]
#[1] 11 12  1