J'ai reçu ce message d'erreur:
Error in if (condition) { : missing value where TRUE/FALSE needed
ou
Error in while (condition) { : missing value where TRUE/FALSE needed
Qu'est-ce que cela signifie et comment puis-je l'éviter?
L'évaluation de condition
a abouti à un NA
. La condition if
doit avoir un résultat TRUE
ou FALSE
.
if (NA) {}
## Error in if (NA) { : missing value where TRUE/FALSE needed
Cela peut arriver accidentellement à la suite de calculs:
if(TRUE && sqrt(-1)) {}
## Error in if (TRUE && sqrt(-1)) { : missing value where TRUE/FALSE needed
Pour vérifier si un objet manque, utilisez is.na(x)
plutôt que x == NA
.
Voir aussi les erreurs lié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 logiquement
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
Je me suis heurté à cela lors de la vérification d'une chaîne nulle ou vide
if (x == NULL || x == '') {
changé pour
if (is.null(x) || x == '') {