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에서 복구하는 방법: 교체 길이가 0입니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다