How to export multiple function or packages in foreach loop in "R"

ElhamMotamedi picture ElhamMotamedi · Aug 18, 2017 · Viewed 9k times · Source

I'm trying to decrease run time of my code by using doParallel package in R.

I'm calling a function awareRateSIR that some extra packages are used in the body of this function. I get some error like

could not find function "vcount" and..

I know vcount is a function of package igraph that is used in awareRateSIR) but it's not the only one. How can I solve this problem? I've thought I should pass all packages name that is used in my function awareRateSIR but I don't know how I cant export multiple function in foreach or how I can export multiple package name.

This is my code:

tp<-foreach(i=1:iter,  .inorder = FALSE, .export = "awareRateSIR",
          .packages = "igraph", .packages="doParallel")%dopar%{
tp <- awareRateSIR(graphContact, graphCom,state)
return(tp)
}

if I don't pass these packages I will get error states some function are unknown if I pass all the packages I will get error:

Error in foreach(i = 1:iter, .inorder = FALSE, .export = "awareRateSIR", : formal argument ".packages" matched by multiple actual arguments"

thanks in advance

Answer

Kumar Manglam picture Kumar Manglam · Aug 18, 2017

You should pass all the packages required, using c function, as below :

tp<-foreach(i=1:iter,  .inorder = FALSE, .export = "awareRateSIR",
          .packages = c("igraph", "doParallel"))%dopar%{
tp <- awareRateSIR(graphContact, graphCom,state)
return(tp)
}