我有 X
,R 中的一个三维数组。我想获取索引 indx
的向量(长度等于 dim(X)[ 1]
) 并形成一个矩阵,其中第一行是 X[ , , indx[1]]
的第一行,第二行是 X[ 的第二行、、indx[2]]
等等。
例如,我有:
R> X <- array(1:18, dim = c(3, 2, 3))
R> X
, , 1
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
, , 2
[,1] [,2]
[1,] 7 10
[2,] 8 11
[3,] 9 12
, , 3
[,1] [,2]
[1,] 13 16
[2,] 14 17
[3,] 15 18
R> indx <- c(2, 3, 1)
我想要的输出是
R> rbind(X[1, , 2], X[2, , 3], X[3, , 1])
[,1] [,2]
[1,] 7 10
[2,] 14 17
[3,] 3 6
到目前为止,我正在使用不优雅(而且速度慢)的 sapply(1:dim(X)[2], function(x) X[cbind(1:3, x, indx)])
。有没有办法使用内置索引函数来做到这一点?我没有运气尝试 ?Extract
中描述的矩阵索引方法,但我可能只是做错了。
最佳答案
也许像这样:
t(sapply(1:3,function(x) X[,,idx][x,,x]))
关于r - 从 3 维数组中的行形成矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3209761/