So beheben sie: fehler in do_one(nmeth): na/nan/inf im aufruf einer fremdfunktion (argument 1)
Ein Fehler, der in R auftreten kann, ist:
Error in do_one(nmeth): NA/NaN/Inf in foreign function call (arg 1)
Dieser Fehler tritt auf, wenn Sie versuchen , K-Means-Clustering in R durchzuführen, der von Ihnen verwendete Datenrahmen jedoch einen oder mehrere fehlende Werte aufweist.
In diesem Tutorial wird genau erklärt, wie Sie diesen Fehler beheben können.
So reproduzieren Sie den Fehler
Angenommen, wir haben den folgenden Datenrahmen in R mit einem fehlenden Wert in der zweiten Zeile:
#create data frame df <- data. frame (var1=c(2, 4, 4, 6, 7, 8, 8, 9, 9, 12), var2=c(12, 14, 14, 8, 8, 15, 16, 9, 9, 11), var3=c(22, NA, 23, 24, 28, 23, 19, 16, 12, 15)) row. names (df) <- LETTERS[1:10] #view data frame df var1 var2 var3 At 2 12 22 B 4 14 NA C 4 14 23 D 6 8 24 E 7 8 28 F 8 15 23 G 8 16 19 H 9 9 16 I 9 9 12 D 12 11 15
Wenn wir versuchen, die Funktion kmeans() zu verwenden, um k-means-Clustering für diesen Datenrahmen durchzuführen, erhalten wir eine Fehlermeldung:
#attempt to perform k-means clustering with k = 3 clusters km <- kmeans(df, centers = 3 ) Error in do_one(nmeth): NA/NaN/Inf in foreign function call (arg 1)
So beheben Sie den Fehler
Der einfachste Weg, diesen Fehler zu beheben, besteht darin, einfach die Funktion na.omit() zu verwenden, um Zeilen mit fehlenden Werten aus dem Datenrahmen zu entfernen:
#remove rows with NA values df <- na. omitted (df) #perform k-means clustering with k = 3 clusters km <- kmeans(df, centers = 3) #view results km K-means clustering with 3 clusters of sizes 4, 3, 2 Cluster means: var1 var2 var3 1 5.5 14.250000 21.75000 2 10.0 9.666667 14.33333 3 6.5 8.000000 26.00000 Vector clustering: ACDEFGHIJ 1 1 3 3 1 1 2 2 2 Within cluster sum of squares by cluster: [1] 46.50000 17.33333 8.50000 (between_SS / total_SS = 79.5%) Available components: [1] "cluster" "centers" "totss" "withinss" "tot.withinss" [6] "betweenss" "size" "iter" "ifault"
Beachten Sie, dass der k-means-Clustering-Algorithmus erfolgreich ausgeführt wird, sobald wir die Zeilen mit fehlenden Werten aus dem Datenrahmen entfernen.
Bonus: Eine vollständige Schritt-für-Schritt-Anleitung zum K-Means-Clustering in R
Zusätzliche Ressourcen
So beheben Sie in R: NAs, die durch Zwang eingeführt wurden
So reparieren Sie in R: Index außerhalb der Grenzen
So beheben Sie das Problem in R: Die Länge eines längeren Objekts ist kein Vielfaches der Länge eines kürzeren Objekts