해결 방법: eval(predvars, data, env) 오류: 'x' 개체를 찾을 수 없습니다.


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

 Error in eval(predvars, data, env): object 'x' not found 

이 오류는 R에서 회귀 모델을 사용하여 새 데이터 프레임의 응답 값을 예측하려고 시도했지만 새 데이터 프레임의 열 이름이 이전에 사용한 데이터 프레임의 열 이름과 일치하지 않을 때 발생합니다. 모델에 맞게. .

이 튜토리얼에서는 이 오류를 수정하는 방법을 정확하게 설명합니다.

오류를 재현하는 방법

R에 간단한 선형 회귀 모델을 적합하다고 가정합니다.

 #create data frame
data <- data. frame (x=c(1, 2, 2, 3, 5, 6, 8, 9),
                   y=c(7, 8, 8, 6, 9, 8, 12, 14))

#fit linear regression model to data
model <- lm(y ~ x, data=data)

#view summary of model
summary(model)

Call:
lm(formula = y ~ x, data = data)

Residuals:
    Min 1Q Median 3Q Max 
-2.1613 -0.7500 0.5000 0.9355 1.5161 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 5.5161 0.9830 5.611 0.00137 **
x 0.7742 0.1858 4.167 0.00590 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.463 on 6 degrees of freedom
Multiple R-squared: 0.7432, Adjusted R-squared: 0.7004 
F-statistic: 17.37 on 1 and 6 DF, p-value: 0.005896

이제 예측() 함수를 사용하여 새 데이터 프레임에 대한 응답 값을 예측하려고 한다고 가정해 보겠습니다.

 #define new data frame
new_data <- data. frame (x1=c(4, 5, 7, 8, 9))

#attempt to predict y values for new data frame
predict(model, newdata=new_data)

Error in eval(predvars, data, env): object 'x' not found

모델을 피팅할 때 사용한 데이터 프레임에 x 라는 예측 변수가 있었지만 새 데이터 프레임에서는 예측 변수 이름을 x1 로 지정했기 때문에 오류가 발생합니다.

이름이 일치하지 않으므로 오류가 발생합니다.

오류를 수정하는 방법

이 오류를 해결하는 방법은 새 데이터 프레임의 예측 변수가 동일한 이름을 갖도록 하는 것입니다.

따라서 새 데이터 블록에서 예측 변수 x 의 이름을 지정해야 합니다.

 #define new data frame
new_data <- data. frame (x=c(4, 5, 7, 8, 9)) 

이제 예측() 함수를 사용하여 새 데이터 프레임에 대한 응답 값을 예측할 수 있습니다.

 #predict y values for new data frame
predict(model, newdata=new_data)

        1 2 3 4 5 
 8.612903 9.387097 10.935484 11.709677 12.483871

열 이름이 일치하므로 오류 없이 새 데이터 프레임에 대한 y 값을 성공적으로 예측할 수 있습니다.

추가 리소스

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

R에서 수정하는 방법: 이름이 이전 이름과 일치하지 않습니다.
R에서 수정하는 방법: 긴 물체의 길이가 더 짧은 물체 길이의 배수가 아닙니다.
R에서 수정하는 방법: 대비는 수준이 2개 이상인 요인에만 적용할 수 있습니다.

의견을 추가하다

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