L'opérateur double égal ne peut tolérer un NAde chaque côté. Si je définis: x = NAet ensuite faire un, if (x == NA){ ... }cette erreur sera générée au moment de l'exécution lorsque l'analyseur examinera le côté gauche du double égal. Pour remédier à cette erreur, assurez-vous que toutes les variables de votre conditionnel ne sont pas utilisées par NA is.na(your_variable).
Eric Leschinski
Réponses:
203
L'évaluation de a conditionabouti à un NA. Le ifconditionnel doit avoir un résultat TRUEou FALSE.
if(NA){}## Error in if (NA) { : missing value where TRUE/FALSE needed
Cela peut arriver accidentellement en raison des résultats des calculs:
if(TRUE&& sqrt(-1)){}## Error in if (TRUE && sqrt(-1)) { : missing value where TRUE/FALSE needed
Pour tester si un objet manque, utilisez is.na(x)plutôt que 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
de chaque côté. Si je définis:x = NA
et ensuite faire un,if (x == NA){ ... }
cette erreur sera générée au moment de l'exécution lorsque l'analyseur examinera le côté gauche du double égal. Pour remédier à cette erreur, assurez-vous que toutes les variables de votre conditionnel ne sont pas utilisées par NAis.na(your_variable)
.Réponses:
L'évaluation de a
condition
abouti à unNA
. Leif
conditionnel doit avoir un résultatTRUE
ouFALSE
.Cela peut arriver accidentellement en raison des résultats des calculs:
Pour tester si un objet manque, utilisez
is.na(x)
plutôt quex == NA
.Voir également les erreurs associées:
Erreur dans if / while (condition) {: l'argument est de longueur zéro
Erreur dans if / while (condition): l'argument n'est pas interprétable comme logique
la source
Je suis tombé sur cela lors de la vérification d'une chaîne nulle ou vide
l'a changé en
la source
!(length(x) == 1L && nzchar(x))