O operador double equals não pode tolerar um NAdos dois lados. Se eu definir: x = NAe, em seguida, fizer um if (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 NA is.na(your_variable).
precisa saber é o seguinte
Respostas:
203
A avaliação do conditionresultado em um NA. O ifcondicional deve ter um TRUEou FALSEresultado.
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.
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
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)
.Respostas:
A avaliação do
condition
resultado em umNA
. Oif
condicional deve ter umTRUE
ouFALSE
resultado.Isso pode acontecer acidentalmente como os resultados dos cálculos:
Para testar se um objeto está faltando, use em
is.na(x)
vez dex == 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
fonte
Corri para isso ao verificar uma seqüência de caracteres nula ou vazia
mudou para
fonte
!(length(x) == 1L && nzchar(x))