Operator podwójnej równości nie może tolerować znaku NApo obu stronach. Jeśli zdefiniuję: x = NAa następnie zrobię, if (x == NA){ ... }to ten błąd zostanie wyrzucony w czasie wykonywania, gdy parser sprawdzi lewą stronę podwójnego równa się. Aby naprawić ten błąd, upewnij się, że żadna zmienna warunku nie używa NA is.na(your_variable).
Eric Leschinski
Odpowiedzi:
203
Ocena conditionzakończyła się plikiem NA. ifWarunkowego musi mieć albo TRUEczy FALSEwynik.
if(NA){}## Error in if (NA) { : missing value where TRUE/FALSE needed
Może się to zdarzyć przypadkowo, ponieważ wyniki obliczeń:
if(TRUE&& sqrt(-1)){}## Error in if (TRUE && sqrt(-1)) { : missing value where TRUE/FALSE needed
Aby sprawdzić, czy brakuje obiektu, użyj is.na(x)zamiast 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
po obu stronach. Jeśli zdefiniuję:x = NA
a następnie zrobię,if (x == NA){ ... }
to ten błąd zostanie wyrzucony w czasie wykonywania, gdy parser sprawdzi lewą stronę podwójnego równa się. Aby naprawić ten błąd, upewnij się, że żadna zmienna warunku nie używa NAis.na(your_variable)
.Odpowiedzi:
Ocena
condition
zakończyła się plikiemNA
.if
Warunkowego musi mieć alboTRUE
czyFALSE
wynik.Może się to zdarzyć przypadkowo, ponieważ wyniki obliczeń:
Aby sprawdzić, czy brakuje obiektu, użyj
is.na(x)
zamiastx == NA
.Zobacz także powiązane błędy:
Błąd w if / while (warunek) {: argument ma długość zero
Błąd w if / while (warunek): argument nie jest interpretowany jako logiczny
źródło
Napotkałem to podczas sprawdzania pustego lub pustego ciągu
zmienił to na
źródło
!(length(x) == 1L && nzchar(x))