2016-04-07 54 views
8

Mam tabelę danych ("normę") zawierającą numeryczne - przynajmniej do tego, co widzę - znormalizowane wartości poniższego formularza :Błąd w do_one (nmeth): NA/NaN/Inf w wywołaniu funkcji obcych (arg 1)

A screenshot of the table

Kiedy jestem wykonywanie

k <- kmeans(norm,center=3) 

ja receving następujący błąd:

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

Czy możesz mi pomóc? Dziękuję Ci!

+0

Czy sprawdziłeś, czy w Twoich danych znajduje się 'NaN/NA/Inf'? Możesz sprawdzić używając 'is.na()' i 'is.finite()' funkcji –

+0

Tak, w moim arkuszu pliku jest dużo 'NAs', ale pomyślałem, że to nie powinno być problemem ?! 'is.finite()' zwraca dużo 'PRAWDÓW', ale także niektóre' FALSEs'. Jak mogę to naprawić? – Joni

+0

Musisz usunąć wartości 'NA/Inf/NaN' ze swoich danych. Szczegółowe informacje można znaleźć w metodach "imputacji wartości brakującej". Jedną z prostych metod jest zastąpienie ich wartościami średnimi rzędu/kolumny. –

Odpowiedz

9

kmeans nie może obsłużyć danych z wartościami NA.

Średnia i wariancja nie są już dobrze zdefiniowane i nie wiadomo, które centrum jest najbliższe.

1

wszyscy z was, którzy mają "Błąd w do_one (nmeth): Na/NaN/Inf w wywołaniu funkcji zagraniczny (arg 1)" problem zamiast

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

napisać następujący i prosimy uważając na przypadek w tęczówce, napisz cokolwiek używałeś na początku.

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