【问题标题】:Using variable as function argument in r在 r 中使用变量作为函数参数
【发布时间】:2021-05-27 04:08:14
【问题描述】:

我想控制一个带有特定变量的线性回归模型。如果我将变量“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 函数中我不能使用这个变量作为参数。如何分配和使用变量来添加拦截和删除?

【问题讨论】:

    标签: r variables arguments


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2021-12-23
        • 1970-01-01
        • 2014-02-03
        • 2022-01-20
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-01
        相关资源
        最近更新 更多