Hoe te repareren in r: fout in sort.int(x, na.last, aflopend, …): 'x' moet atomair zijn
Een foutmelding die u kunt tegenkomen bij het gebruik van R is:
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...): 'x' must be atomic
Deze fout treedt op wanneer u een lijst probeert te sorteren.
Standaard kan R alleen atomaire objecten zoals vectoren sorteren. Om sort() met een lijst te gebruiken, moet u dus eerst de functie unlist() gebruiken.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt oplossen.
Hoe de fout te reproduceren
Stel dat we de volgende lijst in R hebben:
#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"
Stel nu dat we proberen de waarden in de lijst te sorteren:
#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
We ontvangen een foutmelding omdat R niet in staat is lijsten rechtstreeks te sorteren.
Hoe u de fout kunt vermijden
Om de fout te voorkomen, moet u eerst de functie unlist() als volgt gebruiken:
#sort values in list
sort(unlist(some_list))
[1] 2 3 4 5 7 12 19
Merk op dat we de lijst met waarden met succes zonder fouten kunnen sorteren, omdat we eerst unlist() gebruikten, waardoor de lijst naar een numerieke vector werd geconverteerd.
Standaard sorteert R waarden in oplopende volgorde.
We kunnen echter afnemende = TRUE gebruiken om de waarden in aflopende volgorde te sorteren:
#sort values in list in descending order
sort(unlist(some_list), decreasing= TRUE )
[1] 19 12 7 5 4 3 2
Merk op dat de waarden nu in aflopende volgorde worden gesorteerd.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:
Hoe op te lossen in R: argumenten hebben betrekking op een verschillend aantal regels
Hoe op te lossen in R: fout bij het selecteren van ongebruikte argumenten
Hoe op te lossen in R: ongeldige argumenten
Hoe te repareren in R: vervanging heeft een lengte van nul