【问题标题】:R: How to remove element from list by value or typeR:如何按值或类型从列表中删除元素
【发布时间】:2019-01-01 20:43:51
【问题描述】:

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

我搜索了很多,但只找到了如何通过名称或索引删除元素,但这不是我要找的。​​p>

以下是我的列表的示例:

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”或类型为“逻辑”,我想编写一个从列表中删除元素的循环。提前感谢您的帮助!

【问题讨论】:

    标签: r list loops na


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢您的快速回答!我真的不知道如何 tbh,which(example$Value == NA) 不起作用。你能给我一个提示吗?
      • 你需要使用is.na()。
      • 非常感谢! :-)
      • 你不需要which,直接使用example[!is.na(example)]即可。
      • @JakeKaupp 是的,但我认为最好在这个网站上提出不同的答案并讨论每种解决方案的优缺点
      【解决方案3】:

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

      example &lt;- example[!is.na(example)]

      【讨论】:

        猜你喜欢
        • 2020-03-14
        • 2015-08-14
        • 1970-01-01
        • 1970-01-01
        • 2014-11-13
        • 2016-01-05
        • 1970-01-01
        • 2010-10-12
        相关资源
        最近更新 更多