A là mảng 4 chiều có độ mờ 100 * 100 * 100 * 100. Tôi muốn chọn 10.000 ma trận phụ từ hai kích thước cuối cùng của A. B và C là vectơ có chiều dài 10000. Chúng là các tiêu chí lựa chọn. B chỉ định số hàng của A và C chỉ định số cột.R, chọn dãy ma trận phụ từ mảng chiều cao
A <- array(rnorm(100^4), dim=c(100,100,100,100))
B <- sample(nrow(A) , 10000 , repl = TRUE)
C <- sample(ncol(A) , 10000 , repl = TRUE)
D <- array(0, dim=c(10000,100,100))
Với vòng lặp for:
system.time(
for (i in 1:10000){
D[i,,] <- A[B[i],C[i],,]
})
user system elapsed
10.20 0.14 10.34
với mapply:
sub_array <- function(b,c) return(A[b,c,,])
system.time(D <- mapply(FUN = sub_array, B, C, SIMPLIFY='array'))
user system elapsed
9.77 3.75 29.17
mà thậm chí còn chậm hơn. Có cách nào nhanh hơn để làm điều đó không? Cảm ơn.