【问题标题】:Applying foreach library to a multi regression analysis in R将 foreach 库应用于 R 中的多元回归分析
【发布时间】:2016-08-17 15:30:05
【问题描述】:

我有一个包含数字变量的数据框(df)。我想使用所有列组合进行回归分析(因变量与自变量对我来说无关紧要)。

所以我写了下面的代码,效果很好:

#gtools required for combinations function  
library(gtools)
#generate data-3 columns 30 rows data frame
df<-as.data.frame(replicate(3, rnorm(30))) 
#extract two combination of columns
comb<-combinations(n=ncol(df),2,colnames(df))

listc<-list()
for(i in 1:nrow(comb))
  {
  vars<-df[comb[i,]]
  model.lm<-lm(vars[,1]~vars[,2],data=df)
  listc[[i]]<-coefficients(model.lm)
}

我想更快地执行这段代码。我尝试foreachlibrary 来启用并行处理。但是,我无法申请上述应用程序?

如何将 foreach 应用于此代码?我会很高兴得到任何帮助。非常感谢。

【问题讨论】:

标签: r for-loop foreach


【解决方案1】:
#Load required libraries
library(parallel)
library(foreach)
library(doParallel)

#Register parallel cluster with all cores available minus 1
cl <- makeCluster(detectCores() - 1)
registerDoParallel(cl, cores = detectCores() - 1)

#Extract two combination of columns
comb <- combinations(n=ncol(df),2,colnames(df))

listc <-  foreach (i=1:nrow(comb), .packages="gtools", .combine='c') %dopar% {

          #Do stuff
          vars <- df[comb[i,]]
          model.lm <- lm(vars[,1]~vars[,2],data=df)

          #Get coeeficients
          coef_i <- list(coefficients(model.lm))
          coef_i

          }
stopCluster(cl)

返回的listc 是一个列表,其中包含df 中每个迭代/行的系数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-08
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2018-07-26
    • 2022-01-01
    相关资源
    最近更新 更多