在“NA”值的情况下,将来自`lm()`的拟合值与数据帧匹配

时间:2012-08-16 15:20:28

标签: r merge lm

这一定是一个非常微不足道的问题,但我很难找到解决方案。这是我的问题:

此作品

#I run a simple regression
 data(mtcars)
 dataf <- mtcars
 summary(fit1 <- lm(mpg ~ wt,  data=dataf))

#Then I merge the fitted values with the data frame
 dataf$fit <- fitted(fit1)

这(当然)不起作用

 dataf[2,]<-NA
 summary(fit2 <- lm(mpg ~ wt,  data=dataf))
#of course the NA value reduces my lm output
 dataf$fit2 <- fitted(fit2)

Error in `$<-.data.frame`(`*tmp*`, "fit2", value = c(23.3189679389035,  : 
replacement has 31 rows, data has 32

但我如何才能使第二个例子起作用?我通过row.names中的model.matrix()尝试了一个解决方案但是当我在回归中包含某些因素时这不起作用(如果我理解正确的话,这已被报告为bug)。谢谢你的帮助!

2 个答案:

答案 0 :(得分:6)

经过一番搜索,我想我找到了另一种选择

dataf[2,]<-NA
summary(fit2 <- lm(mpg ~ wt,  data=dataf, na.action="na.exclude"))
dataf$fit2 <- fitted(fit2)

应该做的伎俩。正确?

答案 1 :(得分:4)

dataf$fit2 <- NA
dataf$fit2[!is.na(dataf$wt)] <- fitted(fit2)