r:获取只有 NaN 值的列

r: get columns that only have NaN value

示例代码:

df:

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

只有 1 行和 3000 多列。

我想知道我如何才能 select 仅具有 NaN 的列(其中有我已经确认查看数据。)如果具有 NA 如果代码明显不同。

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

期待这样的事情:

res:

#   d                                              
# 1 NaN                                             

我们可以使用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)

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

df[, is.na(df)]

此 returns 列具有 NA 和 NaN