【发布时间】:2015-03-07 18:35:43
【问题描述】:
在运行m1 <- lm(f1, data=DT) 之后,我想保存包含的观察结果(类似于“obs 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) 可以理解的不带引号的列表?
【问题讨论】:
-
obs <- complete.cases(DT[, c(all.vars(f1)), with = FALSE]) -
这回答了我的问题。顺便说一句,
obs <- complete.cases(DT[, all.vars(f1), with = FALSE])也可以工作,因为all.vars返回一个字符向量。我确实尝试了with标志(list(f1),with=TRUE),但这不起作用。 -
因为
list在data.table环境中执行非标准评估,这意味着它接收未加引号的变量名称。
标签: r data.table