我希望你帮我解决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结构?
答案 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
注意:两种解决方案都是单线解决方案