Error en if / while (condición) {: valor faltante donde se necesita VERDADERO / FALSO


159

Recibí este mensaje de error:

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

o

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

¿Qué significa y cómo lo evito?


55
El operador de doble igual no puede tolerar un NAa ningún lado. Si defino: x = NAy luego hago un if (x == NA){ ... }error, este error se generará en tiempo de ejecución cuando el analizador examine el lado izquierdo del doble igual. Para remediar este error, asegúrese de que cada variable en su condicional no esté usando NA is.na(your_variable).
Eric Leschinski

Respuestas:


203

La evaluación de conditionresultó en un NA. El ifcondicional debe tener un TRUEo un FALSEresultado.

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

Esto puede suceder accidentalmente como resultado de los cálculos:

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

Para probar si falta un objeto, use en is.na(x)lugar de x == NA.


Vea también los errores relacionados:

Error en if / while (condición) {: el argumento es de longitud cero

Error en if / while (condición): el argumento no es interpretable como lógico

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

Me encontré con esto al verificar una cadena nula o vacía

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

lo cambió a

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

1
Fyi, también hay!(length(x) == 1L && nzchar(x))
Frank
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.