Как исправить в 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 сортирует значения в порядке возрастания.

Однако мы можем использовать уменьшение=TRUE для сортировки значений в порядке убывания:

 #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: замена имеет нулевую длину

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *