2017-07-26 771 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] 
相關問題