R中的数据重新整形(从向量到数组)

时间:2017-06-04 04:50:11

标签: r

我希望你帮我解决R代码问题。

我有一个对象,M(列表和数组)。像这样。

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

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

m <- c(1:16)

当M是列表&amp;矩阵对象,我可以使用&#39; relist&#39;功能。但是,我不能将它用于数组对象。我怎样才能将m重塑为M结构?

1 个答案:

答案 0 :(得分:0)

我们可以在array中指定dims并使用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

注意:两种解决方案都是单线解决方案