我有一个看起来像
的矩阵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的表达式。
我可以采取对角元素,但必须有一个更简单的方法。
答案 0 :(得分:4)
从?"["
,你会发现以下内容:
当通过[单个参数索引数组时] i可以是具有与x的维度一样多的列的矩阵;结果是一个向量,其元素对应于i的每一行中的索引集。
以后......
第三种索引形式是通过数字矩阵,每个维度都有一列:索引矩阵的每一行然后选择数组的单个元素,结果是一个向量。索引矩阵中不允许使用负指数。允许使用NA和零值:忽略包含零的索引矩阵的行,而包含NA的行在结果中生成NA。
因此,您正在寻找的只是:
A[v]