我想删除包含字符串available
的R列表的嵌套项目。但是,我需要保持列表大小(即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
仅作为示例。在我的实际数据集中,每个嵌套列表的每个项目都可以具有随机字符串,并且应该全部保留在我的输出中。有什么明智的想法吗?
答案 0 :(得分: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)
}
})