Como reparar em r: erro em sort.int(x, na.last, descendente, …): 'x' deve ser atômico
Uma mensagem de erro que você pode encontrar ao usar R é:
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...): 'x' must be atomic
Este erro ocorre quando você tenta classificar uma lista.
Por padrão, R só é capaz de classificar objetos atômicos como vetores. Portanto, para usar sort() com uma lista, você deve primeiro usar a função unlist() .
O exemplo a seguir mostra como resolver esse erro na prática.
Como reproduzir o erro
Suponha que temos a seguinte lista em 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"
Agora suponha que tentamos classificar os valores na lista:
#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
Recebemos um erro porque R não é capaz de classificar listas diretamente.
Como evitar o erro
Para evitar o erro, você deve primeiro usar a função unlist() da seguinte forma:
#sort values in list
sort(unlist(some_list))
[1] 2 3 4 5 7 12 19
Observe que podemos classificar a lista de valores com êxito e sem erros porque primeiro usamos unlist() , que converteu a lista em um vetor numérico.
Por padrão, R classifica os valores em ordem crescente.
No entanto, podemos usar diminuing=TRUE para ordenar os valores em ordem decrescente:
#sort values in list in descending order
sort(unlist(some_list), decreasing= TRUE )
[1] 19 12 7 5 4 3 2
Observe que os valores agora estão classificados em ordem decrescente.
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns no R:
Como consertar em R: argumentos envolvem diferentes números de linhas
Como corrigir em R: erro na seleção de argumentos não utilizados
Como corrigir em R: argumentos inválidos
Como reparar em R: a substituição tem comprimento zero