So beheben sie: fehler in colmeans(x, na.rm = true): „x“ muss numerisch sein


Eine Fehlermeldung, die bei der Verwendung von R auftreten kann, ist:

 Error in colMeans(x, na.rm = TRUE): 'x' must be numeric

Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, die Funktion prcomp() zur Durchführung einer Hauptkomponentenanalyse in R zu verwenden, wenn eine oder mehrere Spalten im von Ihnen verwendeten Datenrahmen nicht numerisch sind.

Es gibt zwei Möglichkeiten, diesen Fehler zu umgehen:

Methode 1: Konvertieren Sie nicht numerische Spalten in numerische Spalten

Methode 2: Entfernen Sie nicht numerische Spalten aus dem Datenrahmen

Die folgenden Beispiele zeigen, wie die einzelnen Methoden in der Praxis angewendet werden.

So reproduzieren Sie den Fehler

Angenommen, wir versuchen, eine Hauptkomponentenanalyse für den folgenden Datenrahmen durchzuführen, der eine Spalte mit Zeichen enthält:

 #create data frame
df <- data. frame (team=c('A', 'A', 'C', 'B', 'C', 'B', 'B', 'C', 'A'),
                 points=c(12, 8, 26, 25, 38, 30, 24, 24, 15),
                 rebounds=c(10, 4, 5, 5, 4, 3, 8, 18, 22))

#view data frame
df

  team points rebounds
1 to 12 10
2 to 8 4
3 C 26 5
4 B 25 5
5 C 38 4
6 B 30 3
7 B 24 8
8 C 24 18
9 to 15 22

#attempt to calculate principal components
prcomp(df)

Error in colMeans(x, na.rm = TRUE): 'x' must be numeric

Die Teamspalte ist eine Zeichenspalte, die beim Versuch, die Funktion prcomp() zu verwenden, einen Fehler verursacht.

Methode 1: Konvertieren Sie nicht numerische Spalten in numerische Spalten

Eine Möglichkeit, diesen Fehler zu vermeiden, besteht darin, die Teamspalte in eine numerische Spalte umzuwandeln, bevor Sie die Funktion prcomp() verwenden:

 #convert character column to numeric
df$team <- as. numeric (as. factor (df$team))

#view updated data frame
df

  team points rebounds
1 1 12 10
2 1 8 4
3 3 26 5
4 2 25 5
5 3 38 4
6 2 30 3
7 2 24 8
8 3 24 18
9 1 15 22

#calculate main components
prcomp(df)

Standard deviations (1, .., p=3):
[1] 9.8252704 6.0990235 0.4880538

Rotation (nxk) = (3 x 3):
                 PC1 PC2 PC3
team -0.06810285 0.04199272 0.99679417
points -0.91850806 0.38741460 -0.07907512
rebounds 0.38949319 0.92094872 -0.01218661

Dieses Mal erhalten wir keine Fehler, da jede Spalte im Datenrahmen numerisch ist.

Methode 2: Entfernen Sie nicht numerische Spalten aus dem Datenrahmen

Eine andere Möglichkeit, den Fehler zu vermeiden, besteht darin, einfach alle nicht numerischen Spalten aus dem Datenrahmen zu entfernen, bevor Sie die Funktion prcomp() verwenden :

 #remove non-numeric columns from data frame
df_new <- df[ , unlist(lapply(df, is. numeric ))]

#view new data frame
df_new

  rebound points
1 12 10
2 8 4
3 26 5
4 25 5
5 38 4
6 30 3
7 24 8
8 24 18
9 15 22

#calculate main components
prcomp(df_new)

Standard deviations (1, .., p=2):
[1] 9.802541 6.093638

Rotation (nxk) = (2 x 2):
                PC1 PC2
points 0.9199431 0.3920519
rebounds -0.3920519 0.9199431

Auch hier erhalten wir keine Fehler, da jede Spalte im Datenrahmen numerisch ist.

Hinweis : In den meisten Fällen ist die erste Methode die bevorzugte Lösung, da sie alle Daten verwendet, anstatt bestimmte Spalten zu entfernen.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in R beheben können:

So beheben Sie das Problem in R: Argumente umfassen eine unterschiedliche Anzahl von Zeilen
So beheben Sie in R: Fehler bei der Auswahl nicht verwendeter Argumente
So reparieren Sie in R: Der Ersatz hat die Länge Null

Einen Kommentar hinzufügen

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