在 r 中使用变量作为函数参数

Using variable as function argument in r

我想用特定变量控制线性回归模型。如果我将变量“c”分配为 0,我想估计模型:

lm(y ~ x)    # model with intercept

如果我将变量“c”指定为 1,我想估计:

lm(y ~ x - 1) # model without intercept

我尝试了下面的代码

c <- 1
lm(y ~ x - c)

但是没用。 c 是 1 但在 lm 函数中我不能使用这个变量作为参数。我如何分配和使用变量来添加拦截和删除?

我不认为你可以用一个简单的变量来做到这一点。您可以有条件地删除拦截,而不是有条件地设置 a 的值。像

myformula <- y~x
if(TRUE) {
  myformula <- update(myformula, ~.-1)
}
myformula
# y ~ x - 1

公式对象不计算它们的参数(否则它们根本就不会工作)。因此,您需要找到一种将 求值 值插入未求值公式表达式的方法。

像计算机科学的所有问题一样,这可以通过多一层间接来解决。

创建一个未计算的表达式,创建您的公式,并在插入变量后对其进行计算:

formula = eval(bquote(y ~ x - .(c)))
lm(formula)