从具有点的公式的 RHS 中删除变量
Remove variable from RHS of a formula that has a dot
我有一个数据框和一个存储在变量中的公式:
> d <- data.frame(cls=1, foo=2, bar=3)
> f <- formula(cls ~ .)
我想以编程方式从该公式的 RHS 中删除一个变量(在我的代码中,该变量的名称将作为字符串传递到某处)。我尝试使用 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
如果无法确保 RHS 不包含点,如何从公式的 RHS 中删除变量?
update(terms(f, data = d), . ~ . - foo)
# cls ~ bar
我有一个数据框和一个存储在变量中的公式:
> d <- data.frame(cls=1, foo=2, bar=3)
> f <- formula(cls ~ .)
我想以编程方式从该公式的 RHS 中删除一个变量(在我的代码中,该变量的名称将作为字符串传递到某处)。我尝试使用 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
如果无法确保 RHS 不包含点,如何从公式的 RHS 中删除变量?
update(terms(f, data = d), . ~ . - foo)
# cls ~ bar