从带有点的公式的右侧删除变量

8

我有一个数据框和一个存储在变量中的公式:

> d <- data.frame(cls=1, foo=2, bar=3)
> f <- formula(cls ~ .)

我希望能够通过编程方式从此公式的右侧删除一个变量(在我的代码中,该变量的名称将作为一个字符串传递到某个地方)。我尝试使用update.formula

> update(f, .~.-foo)    
Error in terms.formula(tmp, simplify = TRUE) : 
  '.' in formula and no 'data' argument

然后我尝试提供data参数:

> update(f, .~.-foo, data=d)
Error in terms.formula(tmp, simplify = TRUE) : 
  '.' in formula and no 'data' argument

我知道如果初始公式右侧没有一个点,上述方法会起作用。
> f <- formula(cls ~ foo + bar)
> update(f, .~.-foo)
cls ~ bar

如果我无法确保公式的右侧不包含点,我该如何从公式的右侧删除一个变量?


1
这在 lm() 的上下文中是有效的。我很惊讶它在这里不起作用。 - Ben Bolker
1个回答

6
update(terms(f, data = d), . ~ . - foo)
# cls ~ bar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接