2014-04-04 35 views
0

當我改變我的data.frame我得到一個錯誤和不能做的LM:爲什麼lm無法在R中修改data.frame?

observation.not.i = area[-i, ] 
fit.new.observation = lm(farm ~ land, data = observation.not.i) 

錯誤是

Error in eval(expr, envir, enclos) : object 'land' not found 

我在刀切過程中使用本作中的以下內容:

r.jack = c(rep(0, 50)) 
y.hat = c(rep(0, 50)) 
for (i in 1:50) { 
    observation.not.i = area[-i, ] 
    fit.new.observation = lm(farm ~ land, data = observation.not.i) 
    y.hat[i] = predict(fit.new.observation, data.frame(land.area=area[i, 3])) 
    r.jack[i] = area[i, 2] - y.hat[i] 
} 

但是,當我剛剛運行fit=lm(farm~land,data=area)它工作正常。如果您知道問題的原因,請告訴我。

+2

你需要爲變量'newdata'提供一個包含公式RHS中所有變量的變量的數據框,但是你提供了一個變量'land.area',因此在'newdata'中找不到'land'。爲什麼不預測(fit.new.observation,newdata = area [i,,drop = FALSE])? –

+0

嗨加文,這與user3114046提供的答案一樣。謝謝。我明白一個更好。 –

回答

2
y.hat[i] = predict(fit.new.observation, data.frame(land.area=area[i, 3])) 

fit.new.observation模型期待中的predictnewdata參數調用land列,但該列被稱爲land.area

+1

預測(fit.new.observation,data.frame(land = area [i,3])) –