通过更改R中的索引来创建子列表

时间:2018-06-26 14:28:25

标签: r list subset

我尝试从另一个列表创建以下形式的子列表,而不使用循环- 列表-[1、2、3、4、5] 结果-[[1],[1、2],[1、2、3],[1、2、3、4],[1、2、3、4、5]]

请不要介意我缺乏礼节/ R技能。我是Stackoverflow和R的新手。谢谢。

1 个答案:

答案 0 :(得分:2)

使用seq_along计算输入的索引,然后对每个索引应用一个函数,该函数给出相应的列表组件。 (在问题v中实际上等于seq_along(v),因此,如果已知是这种情况,则可以将解决方案简化为lapply(v, seq_len)

v <- 1:5 # test input
lapply(seq_along(v), function(x) v[seq_len(x)])

给予:

[[1]]
[1] 1

[[2]]
[1] 1 2

[[3]]
[1] 1 2 3

[[4]]
[1] 1 2 3 4

[[5]]
[1] 1 2 3 4 5