【问题标题】:Delete items from nested lists which contains a specific string从包含特定字符串的嵌套列表中删除项目
【发布时间】:2019-02-02 21:23:42
【问题描述】:

我想删除 R 列表中包含字符串 available 的嵌套项。但是,我需要保持列表大小(即NULL,如果所有项目都已删除)。下面的代码生成一个可能的输入,应该从中删除所有项目:

nested.list <- list()
for(lop in 1:4){
nested.list[[lop]] <- c("available","available")}

预期的输出是:

for(lop in 1:4){
nested.list.out[lop] <- list(NULL)} 

但是,如果该项目不是available,则应保留。让我们假设以下输入:

nested.list[[1]][[2]] <- "hold" 

预期的输出是:

nested.list.out[[1]] <- "hold"

重要的是要强调字符串hold 只是为了举例说明。在我的真实数据集中,每个嵌套列表的每个项目都可以有随机字符串,并且都应该保存在我的输出中。有什么明智的做法吗?

【问题讨论】:

    标签: r list null nested subset


    【解决方案1】:

    最简单的方法是使用lapply 循环列表。在每次迭代中删除所有 available 字符串,如果结果向量为空,则返回 NULL

    nested.list.out <- lapply(nested.list, function(x) {
        x <- x[x != "available"]  # Remove "available" from vector
        if (length(x) < 1){
            # Here resulting vector is empty, so return NULL
            return(NULL)
        } else {
            return(x)
        }
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      相关资源
      最近更新 更多