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

时间:2017-08-16 19:25:30

标签: arrays r cbind

我有两个高维数组,包括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之外还有其他方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

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

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