将3d数组减少到2d

时间:2017-09-29 16:39:03

标签: r

是否有更简洁,单行的方式来执行以下操作?

x <- array(1:12, dim = c(3, 2, 2))

> x[1,,]
     [,1] [,2]
[1,]    1    7
[2,]    4   10

> x[2,,]
     [,1] [,2]
[1,]    2    8
[2,]    5   11

> x[3,,]
     [,1] [,2]
[1,]    3    9
[2,]    6   12

# Reduce 3d array to 2d (Is there a more elegant way?)
y <- x
dim(y) <- c(nrow(y), 4)


> y
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

1 个答案:

答案 0 :(得分:0)

您可以再次将原始数组提供给数组构造函数,并使用dim获取要保留的维度:

y <- array(x, dim = c(dim(x)[1], 4))

     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

如果您想要一个不依赖于硬编码列数的版本:

y <- array(x, dim = c(dim(x)[1], dim(x)[2] * dim(x)[3]))