我有一个包含列表和NA的列表。我想过滤掉NA,但是我不知道NA的确切名称或位置。
我在Google上搜索了很多,但是只发现了如何通过名称或索引来删除元素,但这不是我想要的。
以下是我的列表的示例:
example <- list(list(1,2,3), list(2,3,4), NA, list(2,3,4))
我的输出看起来像这样:
Name Type Value
example list[[4]] List of length 4
[[1]] list[[3]] List of length 3
[[2]] list[[3]] List of length 3
[[3]] logical NA <-I'd like to remove this row
[[4]] list[[3]] List of length 3
我想编写一个循环,如果值是“ NA”或类型是“逻辑”,则从列表中删除一个元素。预先感谢您的帮助!
答案 0 :(得分:0)
您可以使用which
函数查找NA
元素的索引,然后按索引将其删除:
example[-which(is.na(example))]
答案 1 :(得分:0)
这取决于您的数据结构。对于您的示例,以下内容将起作用:
example[!is.na(example) & !is.logical(example)]
如果子列表可以包含您也要删除的NA
,则会变得更加复杂。
答案 2 :(得分:0)
这是一种从R列表中删除NA值的简单方法
example <- example[!is.na(example)]