首页 > 解决方案 > 从包含特定字符串的嵌套列表中删除项目

问题描述

我想删除包含字符串的 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只是为了举例说明。在我的真实数据集中,每个嵌套列表的每个项目都可以有随机字符串,并且都应该保存在我的输出中。任何想法明智地做到这一点?

标签: rlistnullnestedsubset

解决方案


最简单的方法是使用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)
    }
})

推荐阅读