r: получить столбцы, которые имеют только значение NaN - PullRequest
0 голосов
/ 29 марта 2020

пример кода:

df:

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

Существует только 1 строка и 3000+ столбцов.

Мне было интересно, как я могу выбрать только столбцы с NaN (из которых, как я уже подтвердил, просматривая данные). Было бы также неплохо, если бы с NA также существенным образом отличался код.

Я пытался использовать is.nan но это не go так хорошо. Ранее я использовал df,which(df[1,]== some value)] для других значений, таких как числовые и логические, но не работает с NaN и NA.

Ожидается что-то вроде этого:

res:

#   d                                              
# 1 NaN                                             

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Мы можем использовать Filter

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

Может быть лучше сделать unlist, так как есть только одна строка

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

is.nan будет дать FALSE для NA, в то время как is.na дает TRUE для обоих

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

data

df <- data.frame(a = -0.0010616345688829504, 
    b = -4.1135727372109387e-05, c =  -0.0001814242939304348, d = NaN)
0 голосов
/ 30 марта 2020

Для очень простого решения передайте логический вектор в базу R

df[, is.na(df)]

Это возвращает столбцы с NA и NaN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...