我在 R 中出现 "Variable Lengths Differ" 错误的原因是什么?

What is the reason for my "Variable Lengths Differ" error in R?

我正在尝试通过以下方式使用简单拟合和交叉验证:

library(ISLR)
attach(Auto)

Auto$cut.values = cut(displacement,2)
fit = glm(mpg~Auto$cut.values)
cv.glm(Auto, fit, K=10)$delta[1]

但是我收到一个错误:

Error in model.frame.default(formula = mpg ~ Auto$cut.values, data = list( : variable 
lengths differ (found for 'Auto$cut.values')

但是,如果我尝试稍微更改第三行 运行,那么我不会出错并获得结果:

Auto$cut.values = cut(displacement,2)
fit = glm(mpg~cut.values, data = Auto)
cv.glm(Auto, fit, K=10)$delta[1]

据我所知,cut.values, data = AutoAuto$cut.values是一样的。

我在这里遗漏了什么?

当您第一次 attach 数据集时,没有名为 cut.values 的变量。因此,您以后不能参考它。

如果您想从 attach 中受益,您需要 attach(Auto) 在向数据集添加另一个变量后。

library(ISLR)
attach(Auto)

Auto$cut.values = cut(displacement,2)
attach(Auto)

fit = glm(mpg~cut.values)
cv.glm(Auto, fit, K=10)$delta[1]