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