R:如何按值或类型从列表中删除元素

R: How to remove element from list by value or type

我有一个包含列表和 NA 的列表。我想过滤掉 NA,但我不知道 NA 的确切名称或位置。

我在谷歌上搜索了很多,但只找到了如何按名称或通过索引删除元素,但这不是我要找的。

这是我的列表的示例:

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" 或类型为 "logical",我想编写一个循环从我的列表中删除一个元素。预先感谢您的帮助!

您可以使用which函数找到NA个元素的索引,然后通过索引删除它们:

example[-which(is.na(example))]

这取决于你的数据结构。对于您的示例,以下内容将起作用:

example[!is.na(example) & !is.logical(example)]

如果子列表也可以包含您要删除的 NA,这将变得更加复杂。

这是一种从 R 列表中删除 NA 值的简单方法

example <- example[!is.na(example)]