2014-04-04 36 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])) –