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