假设您具有以下矩阵:
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循环,但是考虑到矩阵和索引向量很大,我觉得这会不必要地变慢,并且很可能有更好的方法。
答案 0 :(得分:0)
我们可以cbind
索引来提取值
mat[cbind(rowind, colind)]
#[1] 11 12 1