2017-08-16 9 views
2

私は1000行、3列、10スライス、4スライスの2つの高次元配列を持っています。特定の順序で高次元配列の列をバインドする方法はありますか?

私はそれらをバインドしたいが、それらの間で列を一致させたい。例の下:

#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 

列名が表示されませんが、私はあることを手動で列を注文しています、最初の配列の最初の列二の最初の列を配列、第1の配列の第2の列、第2の配列の第2の列などを含む。

手動で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 
関連する問題