Comment réparer dans R : valeur manquante là où vrai/faux est nécessaire
Une erreur que vous pouvez rencontrer dans R est :
Error in if (x[i] == NA) { : missing value where TRUE/FALSE needed
Cette erreur se produit lorsque vous comparez une valeur à NA dans une instruction if dans R en utilisant la syntaxe x == NA .
Une instruction if attend une valeur VRAI ou FAUX, vous devez donc utiliser is.na(x) à la place car cette fonction renvoie toujours VRAI ou FAUX.
Comment reproduire l’erreur
Supposons que nous essayions de parcourir une liste de valeurs dans un vecteur dans R et d’imprimer le mot « manquant » chaque fois qu’il y a une valeur NA dans le vecteur :
#define vector with some missing values x <- c(2, NA, 5, 6, NA, 15, 19) #loop through vector and print "missing" each time an NA value is encountered for(i in 1:length(x)) { if (x[i] == NA) { print('Missing') } } Error in if (x[i] == NA) { : missing value where TRUE/FALSE needed
Nous recevons une erreur car nous avons utilisé la syntaxe x[i] == NA .
Comment réparer l’erreur
Nous devons changer la syntaxe en is.na(x) comme suit :
#define vector with some missing values x <- c(2, NA, 5, 6, NA, 15, 19) #loop through vector and print "missing" each time an NA value is encountered for(i in 1:length(x)) { if (is.na(x[i])) { print('Missing') } } [1] "Missing" [1] "Missing"
Notez que nous ne recevons pas d’erreur et que nous pouvons imprimer le mot « manquant » chaque fois que nous rencontrons une valeur NA dans le vecteur.
Ressources additionnelles
Les didacticiels suivants expliquent comment corriger d’autres erreurs courantes dans R :
Comment réparer : les NA introduites par la coercition
Comment réparer : nombre incorrect d’indices sur la matrice
Comment réparer : le nombre d’éléments à remplacer n’est pas un multiple de la longueur de remplacement