R 使用矩阵中的行和列索引从矩阵中提取值
我有一个矩阵a,看起来像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 = 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]