【问题标题】:r: get columns that only have NaN valuer:获取只有 NaN 值的列
【发布时间】:2020-07-10 04:56:45
【问题描述】:

示例代码:

df:

#                        a                       b                       c
# 1 -0.0010616345688829504  -4.1135727372109387e-05 -0.0001814242939304348

只有 1 行 3000+ 列。

我想知道如何只选择带有NaN 的列(其中有我已经确认查看数据。)如果使用NA 以及如果代码显着不同也会很棒。

我尝试使用is.nan,但效果不佳。我之前使用 df,which(df[1,]== some value)] 处理其他值,例如数字和逻辑,但不适用于 NaN 和 NA。

期待这样的事情:

res:

#   d                                              
# 1 NaN                                             

【问题讨论】:

    标签: r nan na


    【解决方案1】:

    我们可以使用Filter

    Filter(function(x) is.nan(x), df)
    #   d
    #1 NaN
    

    最好是unlist,因为只有一行

    df[is.nan(unlist(df))]
    

    is.nan 将为NA 提供FALSEis.na 为两者提供TRUE

    is.nan(c(NA, NaN))
    #[1] FALSE  TRUE
    is.na(c(NA, NaN))
    #[1] TRUE TRUE
    

    数据

    df <- data.frame(a = -0.0010616345688829504, 
        b = -4.1135727372109387e-05, c =  -0.0001814242939304348, d = NaN)
    

    【讨论】:

      【解决方案2】:

      对于一个非常简单的解决方案,在基数 R 中传递一个逻辑向量

      df[, is.na(df)]
      

      这将返回具有 NA 和 NaN 的列

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 2020-09-23
        • 2018-11-06
        • 2019-06-16
        • 1970-01-01
        • 2019-06-18
        • 2014-09-28
        相关资源
        最近更新 更多