获取具有行索引和列索引的矩阵的值

时间:2017-06-28 08:15:44

标签: r

我试图用这样的行索引和列索引向量获取矩阵的值。

M = matrix(rnorm(100),nrow=10,ncol=10)
set.seed(123)
row_index = sample(10) # 3  8  4  7  6  1 10  9  2  5
column_index = sample(10) # 10  5  6  9  1  7  8  4  3  2

我有什么方法可以做像

这样的事情
M[row_index, column_index]

并获取

的值
M[3,10], M[8,5], ...

作为载体?

2 个答案:

答案 0 :(得分:1)

我们需要cbind来创建一个2列matrix,其中第一列表示行索引和第二列索引

M[cbind(row_index, column_index)]

答案 1 :(得分:0)

我提出的解决方案并不是在R中做事的最佳方式,因为在大多数情况下,loops are slow与向量化操作相比。但是,对于该问题,您可以简单地实现循环来索引矩阵。虽然根本没有理由不指定任何提供数据结构的对象(例如数据框架或矩阵),但我们无论如何都可以使用循环结构来避免它。

for (i in 1:length(row_index)) {
 print(M[row_index[i], column_index[i]])
  }