So beheben sie das problem in r: das argument ist weder numerisch noch logisch: geben sie na zurück
Eine Warnung, die Ihnen in R begegnen kann, ist:
Warning message: In mean.default(df): argument is not numeric or logical: returning NA
Diese Warnung tritt auf, wenn versucht wird, den Durchschnitt eines Objekts in R zu ermitteln, das weder numerisch noch logisch ist.
In diesem Tutorial wird genau erklärt, wie man mit dieser Warnung in der Praxis umgeht.
So reproduzieren Sie die Warnung
Angenommen, wir erstellen den folgenden Datenrahmen in R:
#create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E'),
points=c(99, 90, 86, 88, 95),
assists=c(33, 28, 31, 39, 34),
rebounds=c(30, 28, 24, 24, 28))
#view data frame
df
team points assists rebounds
1 A 99 33 30
2 B 90 28 28
3 C 86 31 24
4 D 88 39 24
5 E 95 34 28
Wenn wir versuchen, eine Zeichenspalte oder den gesamten Datenrahmen zu mitteln, erhalten wir eine Warnung:
#attempt to calculate mean of character column
mean(df$team)
Warning message:
In mean.default(df$team): argument is not numeric or logical: returning NA
#attempt to calculate mean of entire data frame
mean(df)
Warning message:
In mean.default(df): argument is not numeric or logical: returning NA
Die Funktion Mean() akzeptiert nur einen numerischen Vektor als Argument, weshalb wir in beiden Szenarien eine Warnung erhalten.
So gehen Sie mit der Warnung um
Um mit dieser Warnung umzugehen, verwenden Sie die Funktion „Mean()“ nur mit numerischen Vektoren.
Wir könnten zum Beispiel den Durchschnitt der Punktespalte berechnen, da dieser numerisch ist:
#calculate mean of points column
mean(df$points)
[1] 91.6
Oder wir könnten die Funktion sapply() verwenden, um den Durchschnitt jeder Spalte im Datenrahmen zu berechnen:
#calculate mean of every column in data frame
sapply(df, mean, 2)
team points assists rebounds
NA 90 33 28
Warning message:
In mean.default(X[[i]], ...):
argument is not numeric or logical: returning NA
Wir können den Durchschnitt jeder numerischen Spalte berechnen, erhalten aber dennoch eine Warnmeldung, da wir versucht haben, den Durchschnitt der Charakterspalte „Team“ zu berechnen.
Um diese Warnung vollständig zu vermeiden, könnten wir die Funktion sapply() nur mit den drei numerischen Spalten verwenden:
#calculate mean of each numeric column
sapply(df[c(' points ', ' assists ', ' rebounds ')], mean, 2)
points assists rebounds
90 33 28
Beachten Sie, dass der Durchschnitt jeder numerischen Spalte erfolgreich angezeigt wird und wir keine Warnmeldungen erhalten.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in R beheben können:
Lösung: Die Bedingung hat eine Länge > 1 und nur das erste Element wird verwendet
Problembehebung: Nicht numerisches Argument des binären Operators
Lösung: dim(X) muss eine positive Länge haben
So beheben Sie: Fehler bei der Auswahl nicht verwendeter Argumente