首页 > 解决方案 > 绑定数组的维度

问题描述

让我们从一个示例性多维数组开始,例如

a <- array(1:24, dim = c(3, 2, 2, 2)); a

, , 1, 1

     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6

, , 2, 1

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

, , 1, 2

     [,1] [,2]
[1,]   13   16
[2,]   14   17
[3,]   15   18

, , 2, 2

     [,1] [,2]
[1,]   19   22
[2,]   20   23
[3,]   21   24

现在我想将前两个维度(剩余维度 3 和 4 上的矩阵)cbind 或 rbind 绑定到整个 data.frame。

使用 rbind 生成的 data.frame 应该是这样的:

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

将多维数组的前两个维度绑定到像 data.frame 这样的整个结构的有效方法是什么?请考虑该数组可以具有大于 2 的任意维数,而不仅仅是上面给出的示例中的 4。

提前致谢

标签: rarrays

解决方案


置换和修改维度非常有效:

a <- array(1:24, dim = c(3, 2, 2, 2))

a <- aperm(a, c(2, 1, 3, 4))
dim(a) <- c(dim(a)[1], prod(dim(a)[-1]))
t(a)

#      [,1] [,2]
# [1,]    1    4
# [2,]    2    5
# [3,]    3    6
# [4,]    7   10
# [5,]    8   11
# [6,]    9   12
# [7,]   13   16
# [8,]   14   17
# [9,]   15   18
#[10,]   19   22
#[11,]   20   23
#[12,]   21   24

推荐阅读