I want to create a lot of models so to reduce the time, I decided to use parallel processing. After doing some tests with foreach, which were successful, I tried to do it in parallel. Unfortunately, I can't use my Model vector after doing it in parallel.
library(parallel)
library(doParallel)
library(foreach)
SizeSample = ceiling(0.8 * nrow(FinalData))
SizeSample
[1] 14
NbSample = as.numeric(dlg_input(message = "Number of Folds to create", default = "10")$res)
NbSample
[1] 10
Nb = seq(1:NbSample)
Nb
 [1]  1  2  3  4  5  6  7  8  9 10
Fold <<- function(Fd) { #Create a number of folds for different seeds
+ set.seed(Fd)
+ sample(1:nrow(FinalData), size = SizeSample, replace = FALSE)
+ }
reg <<- function(i){#Create a model with a fold from the "Fold" function
+ Model[[i]] <<- lm(Formula2, data = FinalData[Fold(i),])
+ }
reg_npar <- function(Nb){#Function to create a model for each different folds (Non-Parallel)
+ foreach(i = Nb) %do% {
+ reg(i)}}
Model <<- vector("list", length(Nb))
head(Model, n=3)
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
invisible(reg_npar(Nb))
head(Model, n=3)
[[1]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.439e+04          -7.751e-07           2.623e-06  
[[2]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.594e+04          -2.278e-06           4.212e-06  
[[3]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.679e+04          -1.505e-06           3.085e-06  
reg_par <- function(Nb){#Function to create a model for each different folds (In-Parallel)
+ foreach(i = Nb) %dopar% {
+ reg(i)}}
#Run the "reg_par" function
Model <<- vector("list", length(Nb))
head(Model, n=3)
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
cl = makeCluster(detectCores()-1)
registerDoParallel(cl)
reg_par(Nb)
[[1]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.439e+04          -7.751e-07           2.623e-06  
[[2]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.594e+04          -2.278e-06           4.212e-06  
[[3]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.679e+04          -1.505e-06           3.085e-06  
[[4]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.510e+04          -1.244e-06           2.971e-06  
[[5]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.707e+04          -2.037e-06           3.541e-06  
[[6]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.637e+04          -1.343e-06           2.995e-06  
[[7]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.569e+04          -1.671e-06           3.405e-06  
[[8]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.650e+04          -2.022e-06           3.775e-06  
[[9]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.682e+04          -2.025e-06           3.623e-06  
[[10]]
Call:
lm(formula = Formula2, data = FinalData[Fold(i), ])
Coefficients:
       (Intercept)  Tractor_Prop_Small    Tractor_Prop_Med  
         1.585e+04          -1.434e-06           3.157e-06 
stopCluster(cl)
head(Model, n=3)
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
Does someone know a way to extract and use my Model vector after the parallel processing just like I can use it without the parallel processing?
Thank you
