从列表中删除特定元素

时间:2018-01-16 13:40:32

标签: r list

请考虑以下列表作为示例:

l <- list(list("a","b"),"c", list("d","e"))

如果我想删除长度为1的列表,我应该这样做:

l <- lapply(l, function(e){if(length(e) > 1)e})

但结果如下:

> l

[[1]]
[[1]][[1]]
[1] "a"

[[1]][[2]]
[1] "b"


[[2]]
NULL

[[3]]
[[3]][[1]]
[1] "d"

[[3]][[2]]
[1] "e"

删除列表中特定元素的最优雅方法是什么?

1 个答案:

答案 0 :(得分:1)

只需发布PoGibas'jazzurro's comments即可解决问题。如果你们其中一个想发表你的评论作为答案,请随时删除这个答案。

l&lt; - list(list(“a”,“b”),“c”,list(“d”,“e”))

PoGibas' answer

l[lapply(l, length) > 1]
#> [[1]]
#> [[1]][[1]]
#> [1] "a"
#> [[1]][[2]]
#> [1] "b"
#> [[2]]
#> [[2]][[1]]
#> [1] "d"
#> [[2]][[2]]
#> [1] "e"

jazzurro's answer

l[lengths(l) > 1]
#> [[1]]
#> [[1]][[1]]
#> [1] "a"
#> [[1]][[2]]
#> [1] "b"
#> [[2]]
#> [[2]][[1]]
#> [1] "d"
#> [[2]][[2]]
#> [1] "e"

identical(l[lapply(l, length) > 1], l[lengths(l) > 1])
#> [1] TRUE