Come riparare in r: errore in sort.int(x, na.last, descending, …): 'x' deve essere atomico


Un messaggio di errore che potresti riscontrare quando usi R è:

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

Questo errore si verifica quando provi a ordinare un elenco.

Per impostazione predefinita, R è in grado di ordinare solo oggetti atomici come vettori. Quindi, per usare sort() con una lista, devi prima usare la funzione unlist() .

L’esempio seguente mostra come risolvere questo errore nella pratica.

Come riprodurre l’errore

Supponiamo di avere la seguente lista in 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"

Supponiamo ora di provare a ordinare i valori nell’elenco:

 #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

Riceviamo un errore perché R non è in grado di ordinare direttamente gli elenchi.

Come evitare l’errore

Per evitare l’errore, devi prima utilizzare la funzione unlist() come segue:

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

[1] 2 3 4 5 7 12 19

Tieni presente che siamo in grado di ordinare correttamente l’elenco di valori senza errori perché abbiamo prima utilizzato unlist() , che ha convertito l’elenco in un vettore numerico.

Per impostazione predefinita, R ordina i valori in ordine crescente.

Tuttavia, possiamo usare diminuzione=TRUE per ordinare i valori in ordine decrescente:

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

[1] 19 12 7 5 4 3 2

Tieni presente che i valori sono ora ordinati in ordine decrescente.

Risorse addizionali

I seguenti tutorial spiegano come correggere altri errori comuni in R:

Come risolvere in R: gli argomenti coinvolgono un numero diverso di righe
Come risolvere in R: errore nella selezione di argomenti inutilizzati
Come risolvere in R: argomenti non validi
Come riparare in R: la sostituzione ha lunghezza zero

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *