r - 从 3 维数组中的行形成矩阵

标签 r

我有 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/

相关文章:

r - rmarkdown block 中的条件 `echo`(或eval或include)

r - 使用 mutate 和 lubridate 函数计算年龄

r - 关于持续时间与周期如何在加月润滑中工作的混淆

r - 使用 PBSMapping 和 Shapefiles 帮助在 R 中绘制地理数据

r - 分别对列表的每个元素应用函数

r - 在 R 中计算向量值 Hessian

r - 在数据框中查找连续值

r - 使用可选的非默认参数以编程方式创建 R 函数

r - R中是否有另一个类似外部的函数用于多个向量

r - 大规模使用唯一值(for loops、apply 或 plyr)