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?


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.


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 

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.


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.

:-)


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.


2
Bem-vindo ao CV! Obrigado por responder, mas leia primeiro as respostas existentes e considere se está adicionando algo novo.
Scortchi - Restabelece Monica
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.