R: 从线性模型或公式变量中提取完整的案例/包含的观察结果



运行m1 <- lm(f1, data=DT)后,我想保存所包含的观测值(类似于"obs<-complet.cases(m1)",但它是有效的),这样我就可以对相同的观测值运行第二次回归:m2 <- lm(f2, data=DT[obs])

或者,我想得到由公式对象定义的给定变量集的完整观测结果。考虑一下这个类似R的伪代码:

f1 <- as.formula("y ~ x1 + x2 + x3")
f2 <- as.formula("y ~ x1 + x2")
obs <- complete.cases(DT[,list(all.vars(f1)])
m2 <- lm(f2, data=DT[obs])

我该怎么做?在第一种情况下,lm已经隐式地完成了工作;我如何提取它?在第二种情况下,all.vars返回一个字符向量;如何正确创建DT(data.table)能够理解的未引用列表?

data.table v1.9.5开始,na.omit有一个cols参数。

na.omit(DT, cols = all.vars(f))

假设lm()调用的na.action是默认的na.omit,为什么不直接对原始数据调用na.omit呢?

# create some missing values
mtcars$disp <- ifelse(runif(nrow(mtcars)) > 0.8, NA, mtcars$disp)
# fit model
m1 <- lm(mpg ~ disp, data = mtcars)
na.omit(mtcars[ , c("mpg", "disp")])

查看na.omit的帮助文件以了解替代方案。

最新更新