R 오류 처리 방법: $ 연산자는 원자 벡터에 유효하지 않습니다.


R에서 발생할 수 있는 일반적인 오류는 다음과 같습니다.

 $ operator is invalid for atomic vectors

이 오류는 $ 연산자를 사용하여 원자 벡터의 요소에 액세스하려고 할 때 발생합니다.

“원자 벡터”는 R의 c() 또는 벡터() 함수를 사용하여 생성된 1차원 데이터 개체입니다.

불행히도 $는 원자 벡터의 요소에 액세스하는 데 사용할 수 없습니다. 대신 이중 괄호 [[]]getElement() 함수를 사용해야 합니다.

이 튜토리얼에서는 실제로 이 오류를 처리하는 방법의 예를 공유합니다.

오류 메시지를 재현하는 방법

R에서 다음 벡터의 요소에 액세스하기 위해 $ 연산자를 사용한다고 가정해 보겠습니다.

 #definevector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#display vector
x

a B C D E
1 3 7 6 2

#attempt to access value in 'e'
x$e

Error in x$e: $ operator is invalid for atomic vectors

원자 벡터의 요소에 액세스하기 위해 $ 연산자를 사용하는 것이 유효하지 않기 때문에 오류가 발생합니다. 또한 벡터가 실제로 원자성인지 확인할 수도 있습니다.

 #check if vector is atomic
is. atomic (x)

[1] TRUE

방법 #1: 이중 괄호를 사용하여 요소에 액세스

벡터에서 이름으로 요소에 액세스하는 한 가지 방법은 [[]] 표기법을 사용하는 것입니다.

 #definevector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#access value for 'e'
x[['e']]

[1] 2

방법 #2: getElement()를 사용하여 요소에 액세스

벡터의 이름으로 요소에 액세스하는 또 다른 방법은 getElement() 표기법을 사용하는 것입니다.

 #definevector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#access value for 'e'
getElement(x, 'e')

[1] 2

방법 #3: 벡터를 데이터 프레임으로 변환하고 $operator 사용

벡터에서 이름으로 요소에 액세스하는 또 다른 방법은 먼저 벡터를 데이터 프레임으로 변환한 다음 $ 연산자를 사용하여 값에 액세스하는 것입니다.

 #definevector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#convert vector to data frame
data_x <- as. data . frame (t(x))

#display data frame
data_x

  a B C D E
1 1 3 7 6 2

#access value for 'e'
data_x$e

[1] 2

추가 리소스

다음 튜토리얼에서는 R의 다른 일반적인 오류를 해결하는 방법을 설명합니다.

R에서 수정하는 방법: 이름이 이전 이름과 일치하지 않습니다.
R에서 수정하는 방법: 강제로 인해 발생하는 NA
R에서 복구하는 방법: 범위를 벗어난 힌트
R에서 수정하는 방법: 대비는 수준이 2개 이상인 요인에만 적용할 수 있습니다.

의견을 추가하다

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