Comment réparer dans R : les NA introduits par la coercition



Un message d’avertissement courant que vous pouvez rencontrer dans R est :

Warning message:
NAs introduced by coercion 

Ce message d’avertissement se produit lorsque vous utilisez as.numeric() pour convertir un vecteur dans R en vecteur numérique et qu’il se trouve qu’il y a des valeurs non numériques dans le vecteur d’origine.

Pour être clair, vous n’avez rien à faire pour « corriger » ce message d’avertissement. R vous avertit simplement du fait que certaines valeurs du vecteur d’origine ont été converties en NA car elles ne pouvaient pas être converties en valeurs numériques.

Cependant, ce didacticiel partage les étapes exactes que vous pouvez suivre si vous ne souhaitez pas du tout voir ce message d’avertissement affiché.

Comment reproduire le message d’avertissement

Le code suivant convertit un vecteur de caractères en vecteur numérique :

#define character vector
x <- c('1', '2', '3', NA, '4', 'Hey')

#convert to numeric vector
x_num <- as.numeric(x)

#display numeric vector
x_num

Warning message:
NAs introduced by coercion 
[1]  1  2  3 NA  4 NA

R convertit le vecteur de caractères en vecteur numérique, mais affiche le message d’avertissement NAs introduit par coercition puisque deux valeurs du vecteur d’origine n’ont pas pu être converties en valeurs numériques.

Méthode n°1 : supprimer les avertissements

Une façon de gérer ce message d’avertissement consiste simplement à le supprimer en utilisant la fonction suppressWarnings() lors de la conversion du vecteur de caractères en vecteur numérique :

#define character vector
x <- c('1', '2', '3', NA, '4', 'Hey')

#convert to numeric vector, suppressing warnings
suppressWarnings(x_num <- as.numeric(x))

#display numeric vector
x_num

[1]  1  2  3 NA  4 NA

R convertit avec succès le vecteur de caractères en vecteur numérique sans afficher de message d’avertissement.

Méthode n°2 : remplacer les valeurs non numériques

Une façon d’éviter le message d’avertissement en premier lieu consiste à remplacer les valeurs non numériques du vecteur d’origine par des espaces en utilisant la fonction gsub() :

#define character vector
x <- c('1', '2', '3', '4', 'Hey')

#replace non-numeric values with 0
x <- gsub("Hey", "0", x)

#convert to numeric vector
x_num <- as.numeric(x)

#display numeric vector
x_num

[1]  1  2  3 4 0

R convertit avec succès le vecteur de caractères en vecteur numérique sans afficher de message d’avertissement.

Ressources additionnelles

Les didacticiels suivants expliquent comment résoudre d’autres erreurs courantes dans R :

Comment réparer dans R : les noms ne correspondent pas aux noms précédents
Comment réparer dans R : la longueur d’un objet plus longue n’est pas un multiple de la longueur d’un objet plus courte
Comment réparer dans R : les contrastes ne peuvent être appliqués qu’à des facteurs avec 2 niveaux ou plus

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *