В чем разница между NaN и NA?

48

Я хотел бы знать, почему некоторые языки, такие как R, имеют как NA, так и NaN. В чем различия или они одинаково одинаковы? Действительно ли нужно иметь АН?

user2479
источник
5
Я бы сказал, что NA - это скорее «заполнитель»; NaN для (IEEE) арифметических целей.
JM не является статистиком
@JM. Хороший способ подвести итог.
Suncoolsu
и есть также Inf, который обозначает такие выражения, как, например, 1/0 ...
Karsten W.
Это объясняется в документации здесь .
gung - Восстановить Монику
1
Я думаю, что этот вопрос лучше подходит для переполнения стека, но вопрос слишком старый для переноса.
Зак

Ответы:

44

? is.nan

? is.na

? Н.А.

? NaN

Должен ответить на ваш вопрос.

Но вкратце:

NaN означает - обозначает не число00

NA обычно интерпретируется как отсутствующее значение и имеет различные формы - NA_integer_, NA_real_ и т. Д.

Следовательно, NaN NA и существует потребность в NaN и NA.

suncoolsu
источник
21
Следует отметить, что is.na()возвращается TRUEкак для NA, так и для NaN, что отличается, is.nan()например, is.na(c(0/0,NA)) от is.nan(c(0/0,NA)) .
ЧЛ
11

NA для отсутствующих данных. NaN, как сказал JM, предназначен для арифметических целей. NaN обычно является продуктом некоторой арифметической операции, такой как 0/0. NA обычно объявляется заранее или является продуктом операции, когда вы пытаетесь получить доступ к чему-то, чего нет:

 > a <- c(1,2)
 > a[3]
   [1] NA 
mpiktas
источник
5

Я думаю, что NA означает «Не доступно», тогда как NaN - «Не число», хотя это более мнемоническое, чем объяснение. Кстати, я не знаю другого языка, кроме R (возможно, Splus?), Который имеет оба. Matlab, например, имеет только NaN.

shabbychef
источник
Вы сделали (критическую) опечатку. «Na N - это не число»
Питер Смит
@ Питер Смит: ой, спасибо. мой X-сервер отстает от нажатия клавиш ...
shabbychef
2
Несколько языков имеют эквивалентные конструкции. Например, PHP и Javascript имеют значение NULL и NaN.
Nico
2

NA означает, что ошибка уже возникла, когда вы импортировали электронную таблицу в R. NaN означает, что вы вызвали ошибку после импорта данных. Это третий тип ошибок, который действительно трудно уловить.

:-)

f1r3br4nd
источник
3
какие первые два?
Дэвид Лебауэр
Я был glib, но я имел в виду, что NA - это первый тип ошибок, часто вызванный тем, что в импортированных данных есть неправильный тип, например числовое поле, содержащее знаки препинания / буквы / пробелы или опечатки / регистр-варианты в уровнях фактора. NaN - это вторая ошибка, которая чаще всего возникает, когда вы преобразуете данные в R. Третья ошибка - это данные, которые имеют числовое значение, но по тем или иным причинам неправильное, и оно менее заметно сразу. Опять же, это не является строгой категоризацией, это просто неформальное наблюдение.
f1r3br4nd
0

NA = Нет в наличии

NaN = не число

Я думаю, что как только мы расширим аббревиатуры, это должно быть само собой разумеющимся.

ishandutta2007
источник
2
Добро пожаловать в резюме! Спасибо за ответ, но сначала прочтите существующие ответы и подумайте, добавляете ли вы что-то новое.
Scortchi - Восстановить Монику