2017-07-26 772 views
1

我试图用简单的装修和交叉验证以下列方式:R中的“Variable Lengths Differ”错误是什么原因?

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相同。

我在这里失踪了什么?

+0

'mpg'呢?为什么你只关心'cut'?你应该定义mpg是指什么。 – Masoud

+0

我忘了提及它。但我之前使用attach(Auto)。 –

+3

这是非常不愿意使用'attach'。这是一个常见的问题来源。您可以使用临时模拟'with',并且许多函数都有一个数据参数,这些参数将用于相同的目的。 – lmo

回答

2

当你第一次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] 
相关问题