Как исправить в R: ошибка в sort.int(x, na.last, убывающая, …): 'x' должен быть атомарным


Одно сообщение об ошибке, с которым вы можете столкнуться при использовании R:

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

Эта ошибка возникает при попытке отсортировать список.

По умолчанию R способен сортировать только атомарные объекты, такие как векторы. Таким образом, чтобы использовать sort() со списком, вы должны сначала использовать функцию unlist() .

В следующем примере показано, как устранить эту ошибку на практике.

Как воспроизвести ошибку

Предположим, у нас есть следующий список в 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"

Теперь предположим, что мы пытаемся отсортировать значения в списке:

#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

Мы получаем ошибку, потому что R не может напрямую сортировать списки.

Как избежать ошибки

Чтобы избежать ошибки, мы должны сначала использовать функцию unlist() следующим образом:

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

[1] 2 3 4 5 7 12 19

Обратите внимание, что мы можем успешно отсортировать список значений без каких-либо ошибок, потому что мы сначала использовали unlist() , который преобразовал список в числовой вектор.

По умолчанию R сортирует значения в порядке возрастания.

Тем не менее, вместо этого мы можем использовать уменьшение=ИСТИНА для сортировки значений в порядке убывания:

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

[1] 19 12 7 5 4 3 2

Обратите внимание, что значения теперь отсортированы в порядке убывания.

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:

Как исправить в R: аргументы подразумевают разное количество строк
Как исправить в R: ошибка выбора неиспользуемых аргументов
Как исправить в R: несоответствующие аргументы
Как исправить в R: замена имеет нулевую длину

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.