如何在 R 回归模型中循环公式

Dav*_*d Z 3 for-loop r

假设我有这样的数据:

n=100
df<-data.frame(y=rnorm(n,2,3),
               x1=rbinom(n,1,0.3),
               x2=rbinom(n,10, 0.5), 
               x3=rnorm(n, 50, 20),
               x4=rnorm(n, 3, 2))  
Run Code Online (Sandbox Code Playgroud)

我有一个基本模型y=x1+x2

mod0<-as.formula(y~x1+x2)
lm0<-lm(mod0, data=df)
Run Code Online (Sandbox Code Playgroud)

我想要的是使用 x1 与 x3 和 x4 之间的交互项来更新 mod0,使得mod1<-y~x1+x2+x1*x3mod2<-y~x1+x2+x1*x4。由于我有一堆变量需要循环,我想知道这可能是最好的方法。

bgo*_*dst 5

与其在全局环境中分配松散的变量,不如将公式组装在列表中。这可以通过lapply(), 并利用有用的技巧来完成,该技巧允许您从字符串创建公式:

lapply(names(df)[-(1:3)],function(var) formula(paste0('y~x1+x2+x1*',var),env=globalenv()));
## [[1]]
## y ~ x1 + x2 + x1 * x3
##
## [[2]]
## y ~ x1 + x2 + x1 * x4
Run Code Online (Sandbox Code Playgroud)