Eu recebi esta mensagem de erro:
Error in if (condition) { : missing value where TRUE/FALSE needed
ou
Error in while (condition) { : missing value where TRUE/FALSE needed
O que significa e como evito isso?
Eu recebi esta mensagem de erro:
Error in if (condition) { : missing value where TRUE/FALSE needed
ou
Error in while (condition) { : missing value where TRUE/FALSE needed
O que significa e como evito isso?
Respostas:
A avaliação do condition
resultado em um NA
. O if
condicional deve ter um TRUE
ou FALSE
resultado.
if (NA) {}
## Error in if (NA) { : missing value where TRUE/FALSE needed
Isso pode acontecer acidentalmente como os resultados dos cálculos:
if(TRUE && sqrt(-1)) {}
## Error in if (TRUE && sqrt(-1)) { : missing value where TRUE/FALSE needed
Para testar se um objeto está faltando, use em is.na(x)
vez de x == NA
.
Veja também os erros relacionados:
Erro em if / while (condição) {: o argumento tem comprimento zero
Erro em if / while (condição): o argumento não é interpretável 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
Corri para isso ao verificar uma seqüência de caracteres nula ou vazia
if (x == NULL || x == '') {
mudou para
if (is.null(x) || x == '') {
!(length(x) == 1L && nzchar(x))
NA
dos dois lados. Se eu definir:x = NA
e, em seguida, fizer umif (x == NA){ ... }
, esse erro será gerado em tempo de execução quando o analisador examinar o lado esquerdo do duplo igual. Para corrigir esse erro, verifique se todas as variáveis em seu condicional não estão usando NAis.na(your_variable)
.