运行m1 <- lm(f1, data=DT)
之后我想保存包含的观察结果(类似于&#34; obs&lt; - complete.cases(m1)&#34;,但有效的东西)以便我可以对相同的观察结果进行第二次回归: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)能理解的不带引号的列表?
答案 0 :(得分:4)
从data.table v1.9.5
开始,na.omit
有一个cols
参数。
na.omit(DT, cols = all.vars(f))
答案 1 :(得分:0)
假设你的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的帮助文件以获取替代方案。