Comment gérer l’erreur R : l’opérateur $ n’est pas valide pour les vecteurs atomiques



Une erreur courante que vous pouvez rencontrer dans R est :

$ operator is invalid for atomic vectors

Cette erreur se produit lorsque vous tentez d’accéder à un élément d’un vecteur atomique à l’aide de l’opérateur $ .

Un « vecteur atomique » est tout objet de données unidimensionnel créé à l’aide des fonctions c() ou vector() dans R.

Malheureusement, le $ ne peut pas être utilisé pour accéder aux éléments des vecteurs atomiques. Au lieu de cela, vous devez utiliser des doubles crochets [[]] ou la fonction getElement() .

Ce didacticiel partage des exemples sur la manière de gérer cette erreur dans la pratique.

Comment reproduire le message d’erreur

Supposons que nous essayions d’utiliser l’ opérateur $ pour accéder à un élément du vecteur suivant dans R :

#define vector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#display vector
x

a b c d e 
1 3 7 6 2

#attempt to access value in 'e'
x$e

Error in x$e : $ operator is invalid for atomic vectors

Nous recevons une erreur car il n’est pas valide d’utiliser l’opérateur $ pour accéder aux éléments des vecteurs atomiques. On peut aussi vérifier que notre vecteur est bien atomique :

#check if vector is atomic
is.atomic(x)

[1] TRUE

Méthode n°1 : accéder aux éléments à l’aide de doubles crochets

Une façon d’accéder aux éléments par leur nom dans un vecteur consiste à utiliser la notation [[]] :

#define vector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#access value for 'e'
x[['e']]

[1] 2

Méthode n°2 : accéder aux éléments à l’aide de getElement()

Une autre façon d’accéder aux éléments par leur nom dans un vecteur consiste à utiliser la notation getElement() :

#define vector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#access value for 'e'
getElement(x, 'e')

[1] 2

Méthode n°3 : Convertir le vecteur en bloc de données et utiliser l’opérateur $

Une autre façon d’accéder aux éléments par leur nom dans un vecteur consiste d’abord à convertir le vecteur en bloc de données, puis à utiliser l’opérateur $ pour accéder à la valeur :

#define vector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#convert vector to data frame
data_x <- as.data.frame(t(x))

#display data frame
data_x

  a b c d e
1 1 3 7 6 2

#access value for 'e'
data_x$e

[1] 2

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 : les NA introduits par la coercition
Comment réparer dans R : indice hors limites
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 *