如何修复: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
现在假设我们尝试使用predict()函数来预测新数据帧的响应值:
#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()函数来预测新数据帧的响应值:
#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 个或更多级别的因子