从向量快速矩阵索引

时间:2013-11-06 11:22:42

标签: arrays r matrix-indexing

我想对高D数组进行大量的矩阵索引,但索引会被拆分。我提出了一些解决方案:

### setup
test <- array(0, c(3,3,3,3))
test[1,2,3,2] <- 1
system.time(for (i in 1:1000000) test[1,2,3,2] )
### index split between two vectors
idx1 <- c(1,2);     idx2 <- c(3,2)
### things that work are slower
system.time(for (i in 1:1000000) test[rbind(c(idx1, idx2))] )
system.time(for (i in 1:1000000) test[matrix(c(idx1, idx2), nrow=1)] )
system.time(for (i in 1:1000000) test[t(c(idx1, idx2))] )

但速度最快的rbind(c(X))所需的时间是直接索引的两倍。有没有更快的方法?是否有类似python的* args,我可以在'['?

上运行

1 个答案:

答案 0 :(得分:1)

有点麻烦,但试试

test[idx1[1], idx1[2], idx2[1], idx2[2]]