假设我有这样的数据:
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*x3和mod2<-y~x1+x2+x1*x4。由于我有一堆变量需要循环,我想知道这可能是最好的方法。
与其在全局环境中分配松散的变量,不如将公式组装在列表中。这可以通过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)
| 归档时间: |
|
| 查看次数: |
3726 次 |
| 最近记录: |