下面是我创建的函数的结构,其中实现了并行化。
parallelized.function <- function(...){
# Function used in the parallelization
used.in.par <- function(...)
# Function needed by used.in.par (auxiliars)
aux1<-function(...)
aux2<-function(...)
#---------------------------------------------------#
# PARALLELIZATION PROCESS
suppressMessages(library(foreach))
suppressMessages(library(doParallel))
..................................
%dopar%{ used.in.par(...) }
#---------------------------------------------------#
return(something)
}代码可以工作,但它假设在aux1和aux2中定义parallelized.function才能正常工作(这需要很多代码行)。
是否有任何方法调用aux1 和 aux2 函数,而不是在 parallelized.function**?**中编写所有代码?
我尝试用aux函数创建新脚本,并在source(".../aux1.R")和source(".../aux2.R")中编写parallelized.function,但没有成功。
谢谢,
发布于 2017-03-30 10:07:09
foreach包将为您做到这一点。为了访问当前环境中未定义的acccess函数,您应该使用.export;通过使用.packages选项,可以在每个工作人员上加载所需的包。
foreach(
...,
.export = c('aux1', 'aux2'),
.packages = c(...)
) %dopar% {
...
}注意,不需要在foreach循环中加载foreach和doParallel包。但是当你注册集群的时候你错过了这部分。
https://stackoverflow.com/questions/43114188
复制相似问题