我有一个包含不同长度元素的列表。
我想将长度小于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)
答案 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