2017-08-16 33 views
2

我有兩個高維數組,有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

這似乎有一個錯字的'array2',應該是'5:8'而不是'1:4'給出的結果如下 – manotheshark

+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 
相關問題