ProgramingTip

x $ ed의 R 오류 : $ 연산자가 원자 벡터에 유효하지 않습니다.

bestdevel 2020. 11. 30. 19:25
반응형

x $ ed의 R 오류 : $ 연산자가 원자 벡터에 유효하지 않습니다.


내 코드는 다음과 달라집니다.

x<-c(1,2)
x
names(x)<- c("bob","ed")
x$ed

다음과 같은 오류가 발생하는 이유는 무엇입니까?

x $ ed 오류 : $ 연산자가 원자 벡터에 유효하지 않습니다.


$(참조 ?"$") 에 대한 도움말 파일에서 다음을 읽을 수 있습니다.

$는 재귀 수업에서만 유효하며 아래의 재귀 수업에서만 설명합니다.

자, x재귀 인지 확인해 봅시다

> is.recursive(x)
[1] FALSE

재귀 수업은 목록과 같은 구조를 가지고 있습니다. 벡터는 재귀 적이 지 않고 대신 원자입니다.

> is.atomic(x)
[1] TRUE

따라서 $벡터 (비 재귀 객체)에 적용 때 오류가 발생 합니다. [대신 다음을 사용 하세요.

> x["ed"]
ed 
 2 

당신은 또한 사용할 수 있습니다 getElement

> getElement(x, "ed")
[1] 2

이 오류가 발생하는 이유는 vector.

$연산자 를 사용 간단히 간단히 data.frame. 그러나이 특별한 경우에는 행이 하나만 있으므로이를 조옮김합니다. 않으면 오는가 bob그리고 ed난 당신이 원하는 생각되는 대신 열 이름의 당신의 행 이름이 될을 구석으로입니다.

x <- c(1, 2)
x
names(x) <- c("bob", "ed")
x <- as.data.frame(t(x))
x$ed
[1] 2

때문에 $원자 벡터에서 작동하지 않습니다. [또는 [[대신 사용하십시오 . 에 대한 도움말 파일에서 $:

기본 메소드는 원자 벡터, 배열 및 재귀 (목록과 같은, is.recursive 참조)에 대해 약간 다르게 작동합니다. $는 재귀 수업에서만 유효하며 아래의 재귀 수업에서만 설명합니다.

x[["ed"]] 작동합니다.


이 오류는 현재 R 환경에로드 된 패키지 중 하나에 의해 발생하는 충돌로 인해 모든 것이 라인에 있음에도 불구하고 발생합니다.

따라서이 문제를 해결해야 할 필요가없는 모든 패키지를 R 환경에서 분리하십시오. 발생했을 때 발생하는 문제가 발생했습니다.

detach(package:neuralnet)

결론 : 실행에 더 이상 필요하지 않은 모든 라이브러리를 분리하면 문제가 해결됩니다.


여기서 x는 벡터입니다. $ 연산자를 사용하는 비용 데이터 프레임으로 변환해야합니다.

 x <- as.data.frame(x) 

당신을 위해 일할 것입니다.

x<-c(1,2)
names(x)<- c("bob","ed")
x <- as.data.frame(x)

당신 같은 X의 출력을 제공합니다 :
밥 1
2 에드
, 당신에게 같은 X의 $ 에드의 출력을 줄 것입니다 :
NULL을
당신이 열 이름으로 밥과 에드를 원하는 경우에 당신은 같은 데이터 프레임 트랜스해야 할x <- as.data.frame(t(x))코드가 그래서

x<-c(1,2)
x
names(x)<- c("bob","ed")
x$ed
x <- as.data.frame(t(x))

이제 x $ ed의 출력은 다음과 가변됩니다.
[1] 2


원자 컬렉션은 다음에서 액세스 할 수 있습니다. $

재귀 컬렉션은 그렇지 않습니다. 오히려 [[ ]]사용됩니다

 Browse[1]> is.atomic(list())
 [1] FALSE

 Browse[1]> is.atomic(data.frame())
 [1] FALSE

 Browse[1]> is.atomic(class(list(foo="bar")))
 [1] TRUE

 Browse[1]> is.atomic(c(" lang "))
 [1] TRUE

R은 때때로 재미있을 수 있습니다

 a = list(1,2,3)
 b = data.frame(a)
 d = rbind("?",c(b))
 e = exp(1)
 f = list(d)
 print(data.frame(c(list(f,e))))

   X1 X2 X3 X2.71828182845905
 1  ?  ?  ?          2.718282
 2  1  2  3          2.718282

참고 URL : https://stackoverflow.com/questions/23299684/r-error-in-xed-operator-is-invalid-for-atomic-vectors

반응형