如何在 R 中的 lm() 函数中使用变量?

we_*_*her 5 r lm

假设我有一个数据框(df),其中有两列,分别称为“高度”和“重量”。

假设我定义:

x = "height"
Run Code Online (Sandbox Code Playgroud)

如何在我的lm()函数中使用 x ?仅使用 x 都不起作用df[x]

Ron*_*hah 6

两种方式:

创建一个公式paste

x = "height"
lm(paste0(x, '~', 'weight'), df)
Run Code Online (Sandbox Code Playgroud)

或者使用reformulate

lm(reformulate("weight", x), df)
Run Code Online (Sandbox Code Playgroud)

使用mtcars数据集的可重现示例:

x = "Cyl"
lm(paste0(x, '~', 'mpg'), data = mtcars)

#Call:
#lm(formula = paste0(x, "~", "mpg"), data = mtcars)

#Coefficients:
#(Intercept)          mpg  
#    11.2607      -0.2525  
Run Code Online (Sandbox Code Playgroud)

和同样的

lm(reformulate("mpg", x), mtcars)
Run Code Online (Sandbox Code Playgroud)