在 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)
我想用特定变量控制线性回归模型。如果我将变量“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)