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