这里,我有一个名为f()
的函数,我导入了一些我需要的包。我还在g()
中定义了一个名为f()
的函数。但我发现g()
无法使用我之前导入的包中定义的函数,如果我想并行g。
f=function()
{
command 1...
library(pkg1)... # there is a function named t(),for example
library(pkg2)...
g=function(x)
{
t() # function from pkg1
}
library(parallel)
cl <- makeCluster(core,outfile="")
result=parLapply(cl,x,g) # error, the t is not defined
stopCluster(cl)
}
答案 0 :(得分:0)
您必须将函数和库导出到集群, 例如:
cl <<- makeCluster(length(Tasks), type = "PSOCK")
clusterEvalQ(cl,c(library(httr),library(XML),library(magrittr),library(xml2)))
clusterEvalQ(cl,expr)将列出的库导出到集群,以便它们可以使用它们。 你必须使用 clusterExport(cl,varlist)
对变量做同样的事情