R:从线性模型或公式变量中提取完整的 cases/included 观察值
R: Extract complete cases/included observations from linear model or formula variables
在 运行 宁 m1 <- lm(f1, data=DT)
之后,我想保存包含的观察结果(类似于 "obs <- complete.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
returns 一个字符向量;我如何正确创建 DT (data.table) 会理解的未引用列表?
假设您的 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 的帮助文件以了解替代方案。
来自 data.table v1.9.5
,na.omit
有一个 cols
参数。
na.omit(DT, cols = all.vars(f))
在 运行 宁 m1 <- lm(f1, data=DT)
之后,我想保存包含的观察结果(类似于 "obs <- complete.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
returns 一个字符向量;我如何正确创建 DT (data.table) 会理解的未引用列表?
假设您的 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 的帮助文件以了解替代方案。
来自 data.table v1.9.5
,na.omit
有一个 cols
参数。
na.omit(DT, cols = all.vars(f))