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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert