web-dev-qa-db-fra.com

Erreur dans if / while (condition) {: missing Valeur où TRUE / FALSE était nécessaire

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?

134
Dombey

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
182
Brian Diggs

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 == '') {
8
pbatey