Я использовал sum(is.na(my.df))
, чтобы проверить, содержит ли мой кадр данных какие-либо NA, которые работали так, как я ожидал, но sum(is.nan(my.df))
не работал, как я ожидал.
> my.df <- data.frame(a=c(1, 2, 3), b=c(5, NA, NaN))
> my.df
a b
1 1 5
2 2 NA
3 3 NaN
> is.na(my.df)
a b
[1,] FALSE FALSE
[2,] FALSE TRUE
[3,] FALSE TRUE
> is.nan(my.df)
a b
FALSE FALSE
> sum(is.na(my.df))
[1] 2
> sum(is.nan(my.df))
[1] 0
Боже мой.
Есть ли причина для непоследовательности в поведении? Это из-за отсутствия реализации или намеренно? Что означает значение возврата is.nan(my.df)
? Есть ли веская причина не использовать is.nan()
для всего кадра данных?
В документации для is.na( )
и is.nan( )
типы аргументов кажутся одинаковыми (хотя они специально не перечисляют кадры данных):
is.na()
: объект x R, подлежащий тестированию: методы по умолчанию обрабатывают атомные векторы, списки и парные списки.
is.nan()
: объект x R, подлежащий тестированию: методы по умолчанию обрабатывают атомные векторы, списки и парные списки.