如何基于size_1向量将output向量映射为指定长度的列表?
按指定长度分割向量为列表(R语言实现)
我们有以下R向量:
size_1 = c(3,4,2,3,2,1) output=c(8, 18, 19, 22, 23, 26, 36, 51, 52, 69, 72, 78, 89, 94, 105)
需求是将output向量分割为长度等于length(size_1)的列表,每个子列表的元素个数对应size_1中的数值,预期输出如下:
list(c(8, 18, 19),c(22, 23, 26, 36),c(51, 52),c(69, 72, 78),c(89, 94),c(105)) # 输出展示: # [[1]] # [1] 8 18 19 # # [[2]] # [1] 22 23 26 36 # # [[3]] # [1] 51 52 # # [[4]] # [1] 69 72 78 # # [[5]] # [1] 89 94 # # [[6]] # [1] 105
解决方案
可以用split函数结合rep生成的分组标识实现:
result <- split(output, rep(seq_along(size_1), size_1))
执行上述代码后,result就是符合需求的列表。
代码解释
seq_along(size_1)生成与size_1长度一致的序列,即1:6rep(seq_along(size_1), size_1)会根据size_1的数值重复对应序号,生成分组向量:c(1,1,1,2,2,2,2,3,3,4,4,4,5,5,6)split(output, ...)根据这个分组向量,将output中的元素分配到对应的子列表中
内容的提问来源于stack exchange,提问作者Tou Mou
相关产品推荐
相关产品推荐

