Jaka jest różnica między NaN a NA?

48

Chciałbym wiedzieć, dlaczego niektóre języki, takie jak R, mają zarówno NA, jak i NaN. Jakie są różnice, czy są jednakowo takie same? Czy naprawdę trzeba mieć NA?

użytkownik2479
źródło
5
Powiedziałbym, że NA jest bardziej „symbolem zastępczym”; NaN służy do celów arytmetycznych (IEEE).
JM nie jest statystykiem
@JM. dobry sposób na podsumowanie.
suncoolsu,
a także Inf, który oznacza wyrażenia takie jak na przykład 1/0 ...
Karsten W.
Wyjaśniono to w dokumentacji tutaj .
gung - Przywróć Monikę
1
Myślę, że to pytanie lepiej nadaje się do przepełnienia stosu, ale pytanie jest za stare, aby przeprowadzić migrację.
Zach

Odpowiedzi:

44

? is.nan

? is.na

? NA

? NaN

Powinien odpowiedzieć na twoje pytanie.

Ale w skrócie:

NaN oznacza - oznacza brak liczby00

NA jest ogólnie interpretowane jako brakująca wartość i ma różne formy - NA_integer_, NA_real_ itp.

Dlatego NaN NA i istnieje zapotrzebowanie na NaN i NA.

suncoolsu
źródło
21
Warto zauważyć, że is.na()powraca TRUEzarówno dla NA i Nan, która różni się od is.nan()np is.na(c(0/0,NA)) vs. is.nan(c(0/0,NA)) .
chl
11

NA dotyczy brakujących danych. NaN, jak powiedział JM, służy celom arytmetycznym. NaN jest zwykle produktem niektórych operacji arytmetycznych, takich jak 0/0. NA zwykle jest zadeklarowane z wyprzedzeniem lub jest produktem działania, gdy próbujesz uzyskać dostęp do czegoś, czego nie ma:

 > a <- c(1,2)
 > a[3]
   [1] NA 
mpiktas
źródło
5

Myślę o NA oznaczającym „Niedostępne”, podczas gdy NaN to „Nie liczba”, chociaż jest to bardziej mnemoniczne niż wyjaśnienie. Nawiasem mówiąc, nie znam żadnego innego języka niż R (może Splus?), Który ma oba. Na przykład Matlab ma tylko NaN.

shabbychef
źródło
Zrobiłeś (krytyczną) literówkę. „Na N to„ nie liczba ””
Peter Smit
@Peter Smit: ouch, dzięki. mój serwer X opóźnia naciśnięcia klawiszy ...
shabbychef
2
Kilka języków ma równoważne konstrukcje. Na przykład PHP i JavaScript mają null i NaN.
nico
2

NA oznacza, że ​​błąd już występował podczas importowania arkusza kalkulacyjnego do R. NaN oznacza, że ​​spowodowałeś błąd po zaimportowaniu danych. To trzeci rodzaj błędu, który jest naprawdę trudny do uchwycenia.

:-)

f1r3br4nd
źródło
3
jakie są pierwsze dwa?
David LeBauer,
Byłem glib, ale miałem na myśli - NA to pierwszy rodzaj błędu, często spowodowany przez coś w importowanych danych niewłaściwego typu - np. Pole numeryczne zawierające interpunkcję / litery / białe znaki lub literówki / zmiany wielkości liter w poziomach czynnika. NaN jest drugim błędem, który częściej zdarza się, gdy transformujesz dane w R. Trzeci błąd to dane, które mają wartość liczbową, ale z tego czy innego powodu są niewłaściwe i są mniej zauważalne. Ponownie, nie ma to być rygorystyczna kategoryzacja, tylko nieformalna obserwacja.
f1r3br4nd
0

NA = Niedostępne

NaN = brak liczby

Myślę, że kiedy rozszerzymy akronimy, powinno to być oczywiste.

ishandutta2007
źródło
2
Witamy w CV! Dziękujemy za odpowiedź, ale najpierw przeczytaj istniejące odpowiedzi i zastanów się, czy dodajesz coś nowego.
Scortchi - Przywróć Monikę