【问题标题】:Delete list conditional on the number of elements in R根据 R 中元素的数量删除列表
【发布时间】:2017-09-03 20:26:52
【问题描述】:

我有一个列表L 未命名的逗号分隔字符列表。每个字符列表的长度不等。我需要从L 中删除少于4 个元素的字符列表。如何才能做到这一点?示例L

> L
[[1]]
[1] "A" "B" "C" "D"
[[2]]
[1] "E" "F" "G" 

在上面的例子中,我想结束:

> L
[[1]]
[1] "A" "B" "C" "D"

【问题讨论】:

    标签: r list character conditional lapply


    【解决方案1】:

    我们可以使用lengthslist 元素中的length 获取为vector,基于它创建一个逻辑向量并将list 子集化

    L[lengths(L)>3]
    #[[1]]
    #[1] "A" "B" "C" "D"
    

    一种不太优化的方法(之前使用过)是使用sapply 循环遍历list 元素,获取length 并将其用于子集

    L[sapply(L, length)>3]
    

    数据

    L <- list(LETTERS[1:4], LETTERS[5:7])
    

    【讨论】:

    • 如何将第一个解决方案应用于 data.frame?
    • @CHRD 如果您关心行数,L[sapply(L, nrow) &gt;3] 作为lengths 返回列数或ncol 用于data.frame
    猜你喜欢
    • 2014-06-02
    • 2015-08-03
    • 1970-01-01
    • 2011-11-29
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    相关资源
    最近更新 更多