Errore in if / while (condizione) {: valore mancante in cui è necessario VERO / FALSO


159

Ho ricevuto questo messaggio di errore:

Error in if (condition) { : missing value where TRUE/FALSE needed

o

Error in while (condition) { : missing value where TRUE/FALSE needed

Cosa significa e come posso impedirlo?


5
L'operatore double egals non può tollerare NAalcun lato. Se definisco: x = NAe quindi faccio un if (x == NA){ ... }errore, questo errore verrà lanciato in fase di esecuzione quando il parser esamina il lato sinistro del doppio uguale. Per correggere questo errore, assicurati che ogni variabile nel tuo condizionale non utilizzi NA is.na(your_variable).
Eric Leschinski il

Risposte:


203

La valutazione di ha conditionportato a un NA. Il ifcondizionale deve avere un TRUEo un FALSErisultato.

if (NA) {}
## Error in if (NA) { : missing value where TRUE/FALSE needed

Questo può accadere accidentalmente come i risultati dei calcoli:

if(TRUE && sqrt(-1)) {}
## Error in if (TRUE && sqrt(-1)) { : missing value where TRUE/FALSE needed

Per verificare se manca un oggetto, utilizzare is.na(x)anziché x == NA.


Vedi anche gli errori correlati:

Errore in if / while (condizione) {: argomento di lunghezza zero

Errore in if / while (condizione): l'argomento non è interpretabile come logico

if (NULL) {}
## Error in if (NULL) { : argument is of length zero

if ("not logical") {}
## Error: argument is not interpretable as logical

if (c(TRUE, FALSE)) {}
## Warning message:
## the condition has length > 1 and only the first element will be used

10

Mi sono imbattuto in questo quando ho verificato una stringa nulla o vuota

if (x == NULL || x == '') {

cambiato in

if (is.null(x) || x == '') {

1
Cordiali saluti, c'è anche!(length(x) == 1L && nzchar(x))
Frank
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.