将R中的三维数组合并为二维数组

将R中的三维数组合并为二维数组,r,R,将a设为如下数组 a <- array(1:24,c(2,3,4)) > a , , 1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 , , 2 [,1] [,2] [,3] [1,] 7 9 11 [2,] 8 10 12 , , 3 [,1] [,2] [,3] [1,] 13 15 17 [2,] 14 16 18

a
设为如下数组

 a <- array(1:24,c(2,3,4))
> a
, , 1

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

, , 2

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

, , 3

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

, , 4

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

还有另一种解决方案是使用
rbind

z[1,13]5
#> [2,]    2    4    6
#> [3,]    7    9   11
#> [4,]    8   10   12
#> [5,]   13   15   17
#> [6,]   14   16   18
#> [7,]   19   21   23
#> [8,]   20   22   24
此解决方案可通过
apply
进行推广,以用于z!=4:

应用(a、2、rbind、deparse.level=0)
#>      [,1] [,2] [,3]
#> [1,]    1    3    5
#> [2,]    2    4    6
#> [3,]    7    9   11
#> [4,]    8   10   12
#> [5,]   13   15   17
#> [6,]   14   16   18
#> [7,]   19   21   23
#> [8,]   20   22   24
这些解决方案之间的快速基准测试给出了警告 无法测量3565次评估的正执行时间。 当执行时间如此之快,以至于无法用微基准来衡量时,就会发生这种情况。 我检查了一下,失败的测量结果分布得相当均匀。实质上,, 似乎所有这些解决方案在性能上都没有明显的优势,即使在 我尝试了更大的阵列

由(v0.3.0)

矩阵(aperm(a,c(1,3,2)),ncol=3)或
应用(a,2,c)
 > b
 
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
[3,]    7    9   11
[4,]    8   10   12
[5,]   13   15   17
[6,]   14   16   18
[7,]   19   21   23
[8,]   20   22   24