2017-09-29 6 views
0

次のような、より簡潔で一挙一動的な方法はありますか?3d配列を2次元に縮小する

x <- array(1:12, dim = c(3, 2, 2)) 

> x[1,,] 
    [,1] [,2] 
[1,] 1 7 
[2,] 4 10 

> x[2,,] 
    [,1] [,2] 
[1,] 2 8 
[2,] 5 11 

> x[3,,] 
    [,1] [,2] 
[1,] 3 9 
[2,] 6 12 

# Reduce 3d array to 2d (Is there a more elegant way?) 
y <- x 
dim(y) <- c(nrow(y), 4) 


> y 
    [,1] [,2] [,3] [,4] 
[1,] 1 4 7 10 
[2,] 2 5 8 11 
[3,] 3 6 9 12 

答えて

0

あなただけの再配列コンストラクタへのあなたの元の配列を養う、とあなたが保存したいの寸法を取得するためにdimを使用することができます:あなたが依存していないバージョンを望んでいた場合

y <- array(x, dim = c(dim(x)[1], 4)) 

    [,1] [,2] [,3] [,4] 
[1,] 1 4 7 10 
[2,] 2 5 8 11 
[3,] 3 6 9 12 

列数のハードコード:

y <- array(x, dim = c(dim(x)[1], dim(x)[2] * dim(x)[3]))