2017-06-04 12 views
0

Rコードについて教えてください。Rコードのデータの形状変更(ベクトルから配列へ)R

私はオブジェクトM(リスト&配列)を持っています。このような。

object1 <- array(0, c(2,2,2)) 
M <- list(object1, object1) 

次に、m(ベクトル)をM構造に再構成したいとします。 Mがリスト&行列オブジェクトがある場合は

m <- c(1:16) 

は、私が '再出品' 関数を使用することができます。しかし、私はオブジェクトを配列に使用することはできません。どのように私はM構造にmを形作ることができますか?

+0

'地図です(新しい、古い){dim(new)< - dim(old); new}、new = relist(m、M)、old = M) ' – alistaire

答えて

0

我々はarrayに暗くなりを指定し、relist

lapply(relist(m, skeleton = M), array, dim(object1)) 
#[[1]] 
#, , 1 

#  [,1] [,2] 
#[1,] 1 3 
#[2,] 2 4 

#, , 2 

#  [,1] [,2] 
#[1,] 5 7 
#[2,] 6 8 


#[[2]] 
#, , 1 

#  [,1] [,2] 
#[1,] 9 11 
#[2,] 10 12 

#, , 2 

#  [,1] [,2] 
#[1,] 13 15 
#[2,] 14 16 

それとも別のオプションは、

lapply(setNames(split(m, (seq_along(m)-1) %/% lengths(M)[1]), NULL), array, dim(object1)) 
#[[1]] 
#, , 1 

#  [,1] [,2] 
#[1,] 1 3 
#[2,] 2 4 

#, , 2 

#  [,1] [,2] 
#[1,] 5 7 
#[2,] 6 8 


#[[2]] 
#, , 1 

#  [,1] [,2] 
#[1,] 9 11 
#[2,] 10 12 

#, , 2 

#  [,1] [,2] 
#[1,] 13 15 
#[2,] 14 16 

NOTEで使用することができます。どちらのソリューションは、1行のソリューション

関連する問題