Comment réparer dans R : erreur dans sort.int(x, na.last, décroissant, …) : ‘x’ ça doit être atomique



Un message d’erreur que vous pouvez rencontrer lors de l’utilisation de R est :

Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) : 
  'x' must be atomic

Cette erreur se produit lorsque vous tentez de trier une liste.

Par défaut, R n’est capable de trier que des objets atomiques comme des vecteurs. Ainsi, pour utiliser sort() avec une liste, vous devez d’abord utiliser la fonction unlist() .

L’exemple suivant montre comment résoudre cette erreur dans la pratique.

Comment reproduire l’erreur

Supposons que nous ayons la liste suivante dans R :

#create list
some_list <- list(c(4, 3, 7), 2, c(5, 12, 19)) 

#view list
some_list

[[1]]
[1] 4 3 7

[[2]]
[1] 2

[[3]]
[1]  5 12 19

#view class
class(some_list)

[1] "list"

Supposons maintenant que nous essayions de trier les valeurs de la liste :

#attempt to sort the values in the list
sort(some_list)

Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) : 
  'x' must be atomic

Nous recevons une erreur car R n’est pas capable de trier directement les listes.

Comment éviter l’erreur

Pour éviter l’erreur, il faut d’abord utiliser la fonction unlist() comme suit :

#sort values in list
sort(unlist(some_list))

[1]  2  3  4  5  7 12 19

Notez que nous sommes capables de trier avec succès la liste de valeurs sans aucune erreur car nous avons d’abord utilisé unlist() , qui a converti la liste en vecteur numérique.

Par défaut, R trie les valeurs par ordre croissant.

Cependant, nous pouvons utiliser diminuant=TRUE pour trier les valeurs par ordre décroissant :

#sort values in list in descending order
sort(unlist(some_list), decreasing=TRUE)

[1] 19 12  7  5  4  3  2

Notez que les valeurs sont désormais triées par ordre décroissant.

Ressources additionnelles

Les didacticiels suivants expliquent comment corriger d’autres erreurs courantes dans R :

Comment réparer dans R : les arguments impliquent un nombre de lignes différent
Comment réparer dans R : erreur dans la sélection des arguments inutilisés
Comment réparer dans R : arguments non conformes
Comment réparer dans R : le remplacement a une longueur nulle

Ajouter un commentaire

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