"a"是矩阵,"b"是数字.行号"a"与"b"的长度相同.
a<-matrix(1:24,6,4,byrow = T)
b<-c(3,1,2)
我想将"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 
非常感谢你的帮助!
这是一个将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
或者,如果您不介意data.frames 列表,它可能是:
split(as.data.frame(a), rep(seq_along(b),b))
| 归档时间: | 
 | 
| 查看次数: | 58 次 | 
| 最近记录: |