Der Operator double equals kann NAauf beiden Seiten kein tolerieren . Wenn ich definiere: x = NAund dann ein mache, if (x == NA){ ... }wird dieser Fehler zur Laufzeit ausgelöst, wenn der Parser die linke Seite der Doppelgleichheit untersucht. Um diesen Fehler zu beheben, stellen Sie sicher, dass nicht jede Variable in Ihrer Bedingung NA verwendet is.na(your_variable).
Eric Leschinski
Antworten:
203
Die Auswertung conditionergab eine NA. Die ifBedingung muss entweder ein TRUEoder ein FALSEErgebnis haben.
if(NA){}## Error in if (NA) { : missing value where TRUE/FALSE needed
Dies kann versehentlich als Ergebnis von Berechnungen geschehen:
if(TRUE&& sqrt(-1)){}## Error in if (TRUE && sqrt(-1)) { : missing value where TRUE/FALSE needed
Um zu testen, ob ein Objekt fehlt, verwenden Sie is.na(x)statt x == NA.
if(NULL){}## Error in if (NULL) { : argument is of length zeroif("not logical"){}## Error: argument is not interpretable as logicalif(c(TRUE,FALSE)){}## Warning message:## the condition has length > 1 and only the first element will be used
NA
auf beiden Seiten kein tolerieren . Wenn ich definiere:x = NA
und dann ein mache,if (x == NA){ ... }
wird dieser Fehler zur Laufzeit ausgelöst, wenn der Parser die linke Seite der Doppelgleichheit untersucht. Um diesen Fehler zu beheben, stellen Sie sicher, dass nicht jede Variable in Ihrer Bedingung NA verwendetis.na(your_variable)
.Antworten:
Die Auswertung
condition
ergab eineNA
. Dieif
Bedingung muss entweder einTRUE
oder einFALSE
Ergebnis haben.Dies kann versehentlich als Ergebnis von Berechnungen geschehen:
Um zu testen, ob ein Objekt fehlt, verwenden Sie
is.na(x)
stattx == NA
.Siehe auch die zugehörigen Fehler:
Fehler in if / while (Bedingung) {: Argument hat die Länge Null
Fehler in if / while (Bedingung): Argument kann nicht als logisch interpretiert werden
quelle
Ich bin darauf gestoßen, als ich eine Null- oder leere Zeichenfolge überprüft habe
änderte es zu
quelle
!(length(x) == 1L && nzchar(x))