首页 > 解决方案 > 从 r 中的向量生成列表

问题描述

我有一个像a. 我想从中生成一个b列表a。我只输入了列表的前 4 个组件。任何实现这一目标的快速方法的建议都值得赞赏:

a <- seq(from =0, to = 359, by = 8) 
b <- list(c(0:7), c(8:(8+7)), c(16:(16+7)), c(24:(24+7)))

> b
[[1]]
[1] 0 1 2 3 4 5 6 7

[[2]]
[1]  8  9 10 11 12 13 14 15

[[3]]
[1] 16 17 18 19 20 21 22 23

[[4]]
[1] 24 25 26 27 28 29 30 31

标签: rlistvector

解决方案


您可以从to的min值创建一个序列,然后使用or根据间隔拆分序列。amaxfindIntervalcut

tmp <- seq(min(a), max(a))
split(tmp, findInterval(tmp, a))

#$`1`
#[1] 0 1 2 3 4 5 6 7

#$`2`
#[1]  8  9 10 11 12 13 14 15

#$`3`
#[1] 16 17 18 19 20 21 22 23

#$`4`
#[1] 24 25 26 27 28 29 30 31

#$`5`
#[1] 32 33 34 35 36 37 38 39

#...

另一种使用方式Map

Map(seq, a[-length(a)], a[-1] - 1)

推荐阅读