在运行完
或者,我想获得按公式对象定义的给定变量的完整观测值。考虑这个类似R的伪代码:
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
返回一个字符向量;我该如何正确地创建一个非引用列表,以便DT(data.table)能够理解?
obs <- complete.cases(DT[, c(all.vars(f1)), with = FALSE])
- David Arenburgobs <- complete.cases(DT[, all.vars(f1), with = FALSE])
也可以工作,因为all.vars
返回一个字符向量。我确实尝试了with
标志(list(f1),with=TRUE
),但那不起作用。 - rjturnlist
在data.table
环境中执行非标准评估,这意味着它接收未引用的变量名。 - David Arenburg