当公式由字符串给出时如何运行回归?

问题描述

让我们考虑以下数据:

set.seed(42)
y <- runif(100)
df <- data.frame("Exp" = rexp(100),"norm" = rnorm(100),"Wei" = rweibull(100,1))

我想执行线性回归,但当公式是格式字符串时:

form <- "Exp + norm + Wei"

我以为我只需要使用:

as.formula(lm(y~form,data = df))

但是它不起作用。错误是关于变量长度的变化。 (似乎它仍然将表单视为长度为 1 的字符串向量,但我不知道为什么)。

你知道我该怎么做吗?

解决方法

我们可以用paste来构造公式,直接在lm上使用

lm(paste('y ~',form),data = df)

-输出

#Call:
#lm(formula = paste("y ~",data = df)

#Coefficients:
#(Intercept)          Exp         Norm          Wei  
#   0.495861     0.026988     0.046689     0.003612