2017-06-04 43 views
0

我希望你能帮助我了解R代码。R中的数据整形(从矢量到数组)R

我有一个对象,M(列表&数组)。喜欢这个。

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

然后,我想将m(矢量)重塑为M结构。

m <- c(1:16) 

当M是列表&矩阵对象,我可以使用 '重新登录' 功能。但是,我不能将它用于数组对象。我怎样才能把M重塑成M结构?

+0

'地图(函数(new,old){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 

注意:两个解决方案是一个在线解决方案