You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于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:6
  • rep(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:31:08