Jak naprawić w r: błąd w sort.int(x, na.last, malejąco,…): „x” musi być niepodzielne
Komunikat o błędzie, który możesz napotkać podczas korzystania z R, to:
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...): 'x' must be atomic
Ten błąd występuje podczas próby sortowania listy.
Domyślnie R może sortować tylko obiekty atomowe, takie jak wektory. Aby więc użyć sort() z listą, musisz najpierw użyć funkcji unlist() .
Poniższy przykład pokazuje, jak w praktyce rozwiązać ten błąd.
Jak odtworzyć błąd
Załóżmy, że mamy następującą listę w 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"
Załóżmy teraz, że próbujemy posortować wartości na liście:
#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
Otrzymujemy błąd, ponieważ R nie jest w stanie bezpośrednio sortować list.
Jak uniknąć błędu
Aby uniknąć błędu, musisz najpierw użyć funkcji unlist() w następujący sposób:
#sort values in list
sort(unlist(some_list))
[1] 2 3 4 5 7 12 19
Zauważ, że jesteśmy w stanie pomyślnie posortować listę wartości bez żadnych błędów, ponieważ najpierw użyliśmy unlist() , która przekonwertowała listę na wektor numeryczny.
Domyślnie R sortuje wartości w kolejności rosnącej.
Możemy jednak użyć malejącego=TRUE, aby posortować wartości w kolejności malejącej:
#sort values in list in descending order
sort(unlist(some_list), decreasing= TRUE )
[1] 19 12 7 5 4 3 2
Zwróć uwagę, że wartości są teraz posortowane w kolejności malejącej.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w R:
Jak naprawić w R: argumenty obejmują różną liczbę linii
Jak naprawić w R: błąd w wyborze nieużywanych argumentów
Jak naprawić w R: nieprawidłowe argumenty
Jak naprawić w R: wymiana ma zerową długość