R 使用矩阵中的行和列索引从矩阵中提取值

R 使用矩阵中的行和列索引从矩阵中提取值,r,matrix,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 还有我感兴趣的元素索引矩阵。第1列包含行索引,第2列包含列索引: v = matrix(c(1, 3, 2, 2, 2, 3), nrow = 3, ncol = 2) v [,1] [,2] [1,] 1 2 [2,] 3 2 [3

我有一个矩阵a,看起来像

A = matrix(1:9,3,3)
A
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
还有我感兴趣的元素索引矩阵。第1列包含行索引,第2列包含列索引:

v = matrix(c(1, 3, 2, 2, 2, 3), nrow = 3, ncol = 2)
v
     [,1] [,2]
[1,]    1    2
[2,]    3    2
[3,]    2    3
我想使用“v”中的行和列索引从“A”中提取数字;索引对应于数字4(
A[1,2]
)、6(
A[3,2]
)和8

如何不使用循环直接从“A”中提取这些数字

当我使用

A[v[ , 1], v[ , 2]]
我明白了

因为R取“v”的第一列和第二列的所有组合

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

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

?“[”
,您将发现以下内容:

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

后来

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

因此,您需要的只是:

A[v]

你会踢自己:
A[v]
谢谢,是的,当然,我肯定先尝试过这个问题;-)你同意我删除这个问题吗,gven你有101k作为声誉?这与声誉无关。只有当你觉得这不是一个值得的问题时才删除。当我想提取行而不是列时,它才有效。想知道为什么。在我的例子中,
model=c(6,7,8)
diabetes\u test[model]
给了我第6、第7和第8行,但是
diabetes\u test[,model]
没有给我第6、第7和第8列。这个答案暗指使用一个包含2列的矩阵来提取行和列的组合,而不是一个只能提取行或列的向量(6,7,8,6,7,8),ncol=2)然后
糖尿病试验[模型]
A[v]