Qual é a diferença entre NaN e NA?

48

Gostaria de saber por que algumas línguas como R têm NA e NaN. Quais são as diferenças ou são igualmente iguais? É realmente necessário ter NA?

user2479
fonte
5
Eu diria que NA é mais um "espaço reservado"; NaN é para fins aritméticos (IEEE).
JM não é estatístico
@JM. boa maneira de resumir.
suncoolsu
e há também Inf, que significa expressões como, por exemplo, 1/0 ...
Karsten W.
É explicado na documentação aqui .
gung - Reintegrar Monica
11
Acho que essa pergunta é mais adequada para o estouro de pilha, mas a pergunta é antiga demais para migrar.
Zach

Respostas:

44

? is.nan

? is.na

?N / D

? NaN

Deve responder sua pergunta.

Mas, resumindo:

NaN significa - Significa Não é um Número00

O NA geralmente é interpretado como um valor ausente e possui várias formas - NA_integer_, NA_real_ etc.

suncoolsu
fonte
21
De nota, is.na()os retornos TRUEpara ambos NA e NaN, que difere do is.nan()exemplo is.na(c(0/0,NA)) vs is.nan(c(0/0,NA)) .
chl
11

NA é para dados ausentes. NaN, como JM disse, é para fins aritméticos. NaN é geralmente o produto de alguma operação aritmética, como 0/0. NA geralmente é declarado com antecedência ou é um produto da operação quando você tenta acessar algo que não existe:

 > a <- c(1,2)
 > a[3]
   [1] NA 
mpiktas
fonte
5

Penso que NA significa 'Não disponível', enquanto NaN é 'Não é um número', embora isso seja mais mnemônico do que explicação. A propósito, não conheço outra língua além de R (talvez Splus?) Que possua ambas. O Matlab, por exemplo, possui apenas NaN.

shabbychef
fonte
Você cometeu um erro de digitação (crítico). "Na N é 'Não é um Número'"
Peter Smit
@ Peter Smit: ai, obrigado. meu servidor X está com as teclas pressionadas ... #
shabbychef /
2
Várias linguagens têm construções equivalentes. Por exemplo, PHP e Javascript têm nulo e NaN.
Nico
2

NA significa que o erro já estava lá quando você importou a planilha para R. NaN significa que você causou o erro após importar os dados. É o terceiro tipo de erro que é realmente difícil de detectar.

:-)

f1r3br4nd
fonte
3
quais são os dois primeiros?
precisa saber é o seguinte
Eu estava sendo simplista, mas o que eu quis dizer foi-- NA é o primeiro tipo de erro, geralmente causado por algo nos dados importados ser do tipo errado-- por exemplo, um campo numérico contendo pontuação / letras / espaço em branco ou erros de digitação / variação de caso nos níveis de um fator. NaN é o segundo erro, que ocorre mais frequentemente quando você transforma dados em R. O terceiro erro são dados que possuem um valor numérico, mas por um motivo ou outro, o errado, e é menos imediatamente perceptível. Novamente, isso não pretende ser uma categorização rigorosa, apenas uma observação informal.
F1r3br4 /
0

NA = Não disponível

NaN = Não é um número

Acho que uma vez que expandimos as siglas, deve ser auto-explicativo.

ishandutta2007
fonte
2
Bem-vindo ao CV! Obrigado por responder, mas leia primeiro as respostas existentes e considere se está adicionando algo novo.
Scortchi - Restabelece Monica