it-swarm.it

Errore in if / while (condizione) {: valore mancante dove TRUE / FALSE necessario

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

Che cosa significa e come lo prevengo?

131
Dombey

La valutazione di condition ha prodotto un NA. Il condizionale if deve avere un risultato TRUE o FALSE.

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 un oggetto manca manca is.na(x) piuttosto che x == NA.


Vedi anche gli errori correlati:

Errore in if/while (condizione) {: l'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
180
Brian Diggs

Mi sono imbattuto in questo quando si verifica una stringa vuota o vuota

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

cambiato in

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