Я хочу сделать много матричных индексов массива с высоким 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, которое я мог бы запустить на '['?
for
для выполнения чего-то, для чего вы не должны использовать циклfor
. - person Simon O'Hanlon   schedule 06.11.2013