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

Seb*_*Seb 4 merge r 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)
Run Code Online (Sandbox Code Playgroud)

这(当然)不起作用

 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
Run Code Online (Sandbox Code Playgroud)

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

Seb*_*Seb 6

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

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

应该做的伎俩.对?