R按索引展平矢量列表(无循环)

时间:2017-10-28 04:12:22

标签: r dplyr

给定一个向量列表,如何创建一个新列表并用向量索引填充它?例如,我需要

list(c(1), c(1,1,1), c(1,1))

变成

list(1, 2, 2, 2, 3, 3)

因此c(1)(索引1)为1,c(1,1,1)(索引2)为3,c(1,1)为3(索引3)。 没有循环可以做到这一点吗?感谢。

1 个答案:

答案 0 :(得分:4)

使用rep + seq_along + lengths

rep(seq_along(lst), lengths(lst))
# [1] 1 2 2 2 3 3

seq_along给出索引:

seq_along(lst)
# [1] 1 2 3

lengths给出了每个索引的重复:

lengths(lst)
# [1] 1 3 2