如何按照特定顺序绑定高维数组中的列?

How to bind columns in high dimensional arrays following a specific order?

我有两个高维数组,都有 1000 行、3 列、10 个切片和 4 组切片。

我想绑定它们,但匹配它们之间的列。示例如下:

#dumb data
array1 <- array(1:4, dim = c(2,1,2,2),dimnames = list(NULL,"Ca",1:2,1:2)); array1
array2 <- array(5:8, dim = c(2,1,2,2),dimnames = list(NULL,"Cb",1:2,1:2)); array2

#desired result 
cbind(array1[,,1,1],array2[,,1,1],array1[,,2,1],array2[,,2,1],
array1[,,1,2],array2[,,1,2],array1[,,2,2],array2[,,2,2])

结果是:

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

虽然没有显示列名,但我手动将列排序为:第一个数组的第一列,第二个数组的第一列,第一个数组的第二列,第二个数组的第二列,等等。

除了手动使用 cbind 之外,还有其他方法吗?

提前致谢!

下面是示例的一种实现方式,但可能需要对实际数据集进行一些修改:

m1 <- cbind(array1, array2)
l1 <- lapply(seq_len(nrow(m1) / 2), function(x) m1[seq(2 * x - 1, 2 * x), ])
m2 <- do.call(cbind, l1)

> m2
     array1 array2 array1 array2 array1 array2 array1 array2
[1,]      1      5      3      7      1      5      3      7
[2,]      2      6      4      8      2      6      4      8