Recentemente, ho affrontato un comportamento in table
funzione che non era quello che ci si aspettava:comportamento imprevisto di tabella funzione con "nan" Valori
Per esempio, per non prendere il seguente vettore:
ex_vec <- c("Non", "Non", "Nan", "Oui", "NaN", NA)
Se controllo per NA
valori nel mio vettore, "NaN"
non è considerato uno (come previsto):
is.na(ex_vec)
# [1] FALSE FALSE FALSE FALSE FALSE TRUE
Ma se ho provato per ottenere i diversi valori di frequenze:
table(ex_vec)
#ex_vec
#Nan Non Oui
# 1 2 1
"NaN"
non appare nella tabella.
Tuttavia, se "chiedere" table
per mostrare i valori NA
, ottengo questo:
table(ex_vec, useNA="ifany")
#ex_vec
# Nan NaN Non Oui <NA>
# 1 1 2 1 1
Così, le stringhe di caratteri "NaN"
è trattata come una chiamata NA
valore all'interno table
, durante il trattamento nel uscita come valore non NA
.
Lo so (sarebbe meglio e) Potrei risolvere il mio problema convertendo il mio vettore in un factor
ma ciò nonostante, mi piacerebbe davvero sapere cosa sta succedendo qui. Qualcuno ha un'idea?
questo è solo l'uso di base .. come "perché fa' somma (c (1, NA)) 'return NA?" 'table (..., exclude = if (useNA ==" no ") c (NA, NaN), useNA = c (" no "," ifany "," always ")" Non capisco lo scopo di queste risposte – rawr
@rawr per spiegare perché una * stringa * è considerata come un valore 'NaN'? Questo non è l'uso richiesto, ma il perché: è meno ovvio del tuo esempio di somma che è coperto dal documento. Voglio dire: 'NaN! =" NaN "' quindi perché '' "NaN" 'escluso poiché non fa parte del vettore di esclusione) – Tensibai
@Tensibai di nuovo, i documenti dicono' escludi: i livelli da rimuovere per tutti i fattori' _levels_ non sono 'NA' e non sono' NaN', sono _strings_ .. away_strings_ try 'table (1, exclude = 1)' – rawr