从公式中删除响应变量

6

有没有一种简单的方法可以从公式中删除响应变量?我尝试使用stats::update.formula,像这样:

> update(y ~ x, ~ .)
y ~ x

但是您可以看到,上述代码并未从公式中移除响应变量。
3个回答

7

你可以使用NULL作为响应。

update(y ~ x, NULL ~ .)
# ~x

3
如果公式有左表达式(LHS),则该左表达式将存储在第二个组件中,因此:
fo <- y ~ x
fo[-2]
## ~x

请注意,length(fo) 可以区分具有 LHS 和没有 LHS 的公式。
length(fo)
## [1] 3
length(fo[-2])
## [1] 2

如果我们不确定是否存在 LHS 并希望在存在 LHS 时将其移除,则应按照以下方式操作:
if (length(fo) == 3) fo[-2] else fo
## ~x

2

虽然不是特别优雅,但您可以执行以下操作来删除响应变量:

formula(delete.response(terms(y ~ x)))
# ~x

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