首页 > 解决方案 > 将此函数的参数更改为 R 中的抽象变量

问题描述

为了使用for循环,我试图用变量替换这个函数中的参数:

lm(mpg~cylinders, data=Auto)

所以我这样做了:

var1='cylinders'

lm((paste('mpg ~',var1)), data = Auto)

它工作得很好。

现在,我想知道如何用 var1 和 var2 替换参数 cylinders+acceleration。

于是尝试了同样的方法。我试图替换这个:

lm(mpg~cylinders+acceleration, data=Auto)

经过

var1='cylinders'
var2 = 'acceleration'

lm((paste('mpg ~',var1+var2)), data = Auto)

但我收到一条消息错误:

Error in var1 + var2 : non-numeric argument to binary operator

所以我想了解如何使用 var1 和 var2 以便之后使用for循环。

标签: r

解决方案


用于reformulate生成公式。

var1 <- 'cyl'
var2 <- 'disp'
fo <- reformulate(c(var1, var2), "mpg")
lm(fo, mtcars)

或者你可以这样写它给出相同的答案,除了上面在输出中的 Call: 行中按字面显示 fo 而下面的代码在输出中的 Call: 行中扩展 fo。

do.call("lm", list(fo, quote(mtcars)))

给予:

Call:
lm(formula = mpg ~ cyl + disp, data = mtcars)

Coefficients:
(Intercept)          cyl         disp  
   34.66099     -1.58728     -0.02058  

推荐阅读