在不同系列的线性模型中循环变量的多个组合的问题

时间:2019-09-24 13:26:30

标签: r for-loop lm

我遇到一个问题,我认为它可以轻松解决,但是我无法找到答案。

我有一个excel文件,其中包含一定数量的列,这些列包含具有一定自变量(V1,V2,V3)的交通量序列(T1,T2),我必须向其建立所有线性模型的组合。我本来可以以较慢的方式执行此操作,但是有人要求我使用循环进行优化,而这正是我在努力的地方。

这是一个可重复的示例:

isNewUser

这将创建一个列表,其中包含Traffic Series T1的线性模型的所有可能组合。但是,我有数据,有时我可能会有几个流量系列列,我希望模型在这些列上进行迭代,以便将所有组合存储在列表中。我尝试将以下内容添加到代码中:

set.seed(1)
rep.example<-data.frame(V1=rnorm(25,15),V2=rnorm(25,5),V3=runif(25,0.4),T1=rnorm(25,12),T2=rnorm(25,35))

ind.vars = c("V1","V2","V3")

Comb.Matrix <- expand.grid(c(TRUE, FALSE), c(TRUE, FALSE), c(TRUE, FALSE))
names(Comb.Matrix) <- ind.vars

Comb.Matrix <- Comb.Matrix[-(dim(Comb.Matrix)[1]),]


allModelsList       <- apply(Comb.Matrix,
                             1,
                             function(x) as.formula(paste(c(" T1 ~ ",
                                                            ind.vars[x]), collapse = " + ")))

我希望它进入Series的每个值,并以'T1〜Var Combinations'的形式对该值进行所有可能的组合,而对于T2和更多最终列使用相同的值。...

谢谢。

1 个答案:

答案 0 :(得分:0)

通过以下操作,我设法解决了该问题:

allModelsList=list()

for (i in 1:length(Series)){
  allModelsList <- append(
    allModelsList, 
    apply(Comb.Matrix, 1, function(x) as.formula(paste(c(paste(" ", Series[i], " ~ "), ind.vars[x]), collapse = " + ")))
  )
}

对于“系列”中的每个索引/列,模型都会执行所有可能的变量组合。