2016-04-07 28 views
8

Ho una tabella di dati ("norma") che contiene valori numerici - almeno per quello che posso vedere - normalizzati della seguente forma :Errore in do_one (nmeth): NA/NaN/Inf nella chiamata di funzione esterna (arg 1)

A screenshot of the table

Quando sto eseguendo

k <- kmeans(norm,center=3) 

sto receving il seguente errore:

Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1) 

Potete aiutarmi? Grazie!

+0

Hai controllato se c'è "NaN/NA/Inf" nei tuoi dati? Puoi controllare usando le funzioni 'is.na()' e 'is.finite()' –

+0

Sì, c'è un sacco di 'NAs 'nel mio foglio di file, ma ho pensato che non dovrebbe essere un problema ?! 'is.finite()' restituisce molti 'TRUEs' ma anche alcuni' FALSEs'. Come posso risolvere questo? – Joni

+0

Dovresti rimuovere i valori 'NA/Inf/NaN' dai tuoi dati. Vedi i metodi di "imputazione del valore mancante" per i dettagli. Un semplice metodo li sta sostituendo con valori medi di riga/colonna. –

risposta

9

kmeans non possono gestire dati con valori NA.

La media e la varianza non sono più ben definite e non si sa più quale centro è più vicino.

1

tutti voi tutti che stanno avendo "Errore nel do_one (nmeth): NA/NaN/Inf in chiamata di funzione estera (arg 1)" problema invece di

results <- kmeans(iris.features,3) 
results 

scrivere la seguente e vi prego di essere attento al caso in iris scrivi quello che hai usato all'inizio

results <- kmeans(na.omit(irisa.features),3) # this helps in omitting NA 
results