【问题标题】:R remove empty (nchar = 0) elements from list of listsR从列表列表中删除空(nchar = 0)元素
【发布时间】:2016-05-28 18:53:41
【问题描述】:

我有一个列表/向量列表:

list(c("cat1", "cat6", ""), c("cat5", "cat3", "cat4"), c("cat6", 
"cat4", ""), c("cat5", "cat1", "cat2", "cat4"), c("cat6", "cat3", 
"cat2"))

我正在寻找一种优雅的方式来删除带有 nchar=0 的内部元素,例如第一个列表中的第三个元素(值为“”)。 我试过了:

l[lapply(l,length)>0] 

但这不适用于内部元素长度,但适用于外部列表元素长度。 预期的输出是:

list(c("cat1", "cat6"), c("cat5", "cat3", "cat4"), c("cat6", 
    "cat4"), c("cat5", "cat1", "cat2", "cat4"), c("cat6", "cat3", 
    "cat2")) 

任何帮助表示赞赏

【问题讨论】:

  • 你可以试试sapply(l, function(x) x[nchar(x) > 0])

标签: r list nested-lists sapply


【解决方案1】:

我们可以使用nzchar 为非空白/空白元素创建一个逻辑索引TRUE/FALSE,然后将list 元素作为子集。

lapply(l, function(x) x[nzchar(x)])

或者另一个选项是setdiff,从每个list 元素中删除'' 元素。

lapply(l, setdiff, '')

length 函数将计算 '',因此它对删除 '' 没有多大帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-23
    • 2013-10-02
    • 2016-01-05
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    相关资源
    最近更新 更多