【发布时间】:2014-11-19 12:34:46
【问题描述】:
我有一个矩阵 (m.idx),其中包含我想要索引的向量的位置元素。
> m.idx
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 3 4 5 6 7
[3,] 5 6 7 8 9
假设 x 是我的向量。
x <- c(9,3,2,5,3,2,4,8,9)
我想用x的对应位置元素重新填充矩阵索引。
所以我会...
> m.pop
[,1] [,2] [,3] [,4] [,5]
[1,] 9 3 2 5 3
[2,] 2 5 3 2 4
[3,] 3 2 4 8 9
我可以通过以下方式以一种笨拙的方式做到这一点。
> m.pop <- t(matrix(t(matrix(x[c(t(m.idx))])),ncol(m.idx),nrow(m.idx)))
> m.pop
[,1] [,2] [,3] [,4] [,5]
[1,] 9 3 2 5 3
[2,] 2 5 3 2 4
[3,] 3 2 4 8 9
但似乎有一种更简单的方法来索引这些值。 什么是最好的(对于大型集合来说也是最快/有效的)方法?
【问题讨论】:
-
您的矩阵有多大?我在答案中添加了一些基准。
-
我现在正在查看 5e3 行乘以 100 列。但是当我扩大规模时,您的回答可能会很有用 - tks。用于提供基准。正如我所料,我笨拙的方法排在最后。