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

Einen Kommentar hinzufügen

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