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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert