从具有点的公式的RHS中删除变量

lio*_*ori 7 r formula

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

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

我想以编程方式从该公式的RHS中删除一个变量(在我的代码中,此变量的名称将作为字符串传递到某处).我试过用update.formula:

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

然后我试着提供这个data论点:

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

我知道如果初始公式在右侧没有点,上述情况将起作用:

> f <- formula(cls ~ foo + bar)
> update(f, .~.-foo)
cls ~ bar
Run Code Online (Sandbox Code Playgroud)

如果我无法确保RHS不包含点,如何从公式的RHS中删除变量?

Jul*_*ora 5

update(terms(f, data = d), . ~ . - foo)
# cls ~ bar
Run Code Online (Sandbox Code Playgroud)