绑定列表的特定元素

时间:2018-12-12 11:07:07

标签: r list

我有一个包含不同长度元素的列表。 我想将长度小于L的元素绑定在一起,并用united元素替换各个短元素。

例如:

L = list()
for (i in 1:3) {
    L[[i]] = seq(1:i)
}

我想将元素1,2合并为包含数字1,1,2而不是前两个元素的元素“ 12”。 如何系统地(循环或矢量地)执行此操作?

所需结果是:第一个元素c(1,1,2),第二个元素c(1,2,3)

2 个答案:

答案 0 :(得分:2)

我们可能会

c(list(unlist(L[lengths(L) < 3])), L[lengths(L) >= 3])
# [[1]]
# [1] 1 1 2
#
# [[2]]
# [1] 1 2 3

第二部分L[lengths(L) >= 3]包含L的所有足够长的元素。然后L[lengths(L) < 3]L所有短元素的列表,unlist将它们组合在一起。

答案 1 :(得分:1)

我们得到max('L')中的length list,通过与lengths比较获得逻辑索引,将那些元素与最大长度并附加其他列表元素

i1 <- max(lengths(L))
i2 <- i1 != lengths(L)
c(list(Reduce(`c`, L[i2])), L[!i2])
#[[1]]
#[1] 1 1 2

#[[2]]
#[1] 1 2 3