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개 이상인 요인에만 적용할 수 있습니다.