"a"是矩阵,"b"是数字.行号"a"与"b"的长度相同.
a<-matrix(1:24,6,4,byrow = T)
b<-c(3,1,2)
Run Code Online (Sandbox Code Playgroud)
我想将"a"转换为列表,其中每个对象中的元素数量与"b"相同.预期结果如下:
[[1]]
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[[2]]
[,1] [,2] [,3] [,4]
[1,] 13 14 15 16
[[3]]
[,1] [,2] [,3] [,4]
[1,] 17 18 19 20
[2,] 21 22 23 24
Run Code Online (Sandbox Code Playgroud)
非常感谢你的帮助!
这是一个将a根据分割的选项,b因为它将返回一个原子向量列表,我们lapply将它转换为matrix再次.
lapply(split(a, rep(seq_along(b),b)), matrix, ncol = ncol(a))
#$`1`
# [,1] [,2] [,3] [,4]
#[1,] 1 2 3 4
#[2,] 5 6 7 8
#[3,] 9 10 11 12
#
#$`2`
# [,1] [,2] [,3] [,4]
#[1,] 13 14 15 16
#
#$`3`
# [,1] [,2] [,3] [,4]
#[1,] 17 18 19 20
#[2,] 21 22 23 24
Run Code Online (Sandbox Code Playgroud)
或者,如果您不介意data.frames 列表,它可能是:
split(as.data.frame(a), rep(seq_along(b),b))
Run Code Online (Sandbox Code Playgroud)