使用向量中的索引从矩阵中提取元素

时间:2015-11-20 13:41:23

标签: r matrix

我有一个看起来像

的矩阵A.
A=matrix(1:9,3,3)
A
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

和我感兴趣的元素索引向量:

v=matrix(c(1, 3, 2, 2, 2, 3),3,2)
v
     [,1] [,2]
[1,]    1    2
[2,]    3    2
[3,]    2    3

v中的行和列索引对应于数字4 = A [1,2],6和8。

如何在不使用循环的情况下直接从A中提取这些数字?

当我使用

A[v[,1],v[,2]]

我得到了

     [,1] [,2] [,3]
[1,]    4    4    7
[2,]    6    6    9
[3,]    5    5    8

因为R采用v。

的第一列和第二列的所有组合

我想要的是一个直接给我4,6,8的表达式。

我可以采取对角元素,但必须有一个更简单的方法。

1 个答案:

答案 0 :(得分:4)

?"[",你会发现以下内容:

  

当通过[单个参数索引数组时] i可以是具有与x的维度一样多的列的矩阵;结果是一个向量,其元素对应于i的每一行中的索引集。

以后......

  

第三种索引形式是通过数字矩阵,每个维度都有一列:索引矩阵的每一行然后选择数组的单个元素,结果是一个向量。索引矩阵中不允许使用负指数。允许使用NA和零值:忽略包含零的索引矩阵的行,而包含NA的行在结果中生成NA。

因此,您正在寻找的只是:

A[v]