我试图用这样的行索引和列索引向量获取矩阵的值。
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], ...
作为载体?
答案 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]])
}