我有以下代码,我收到如下错误:
object 'a' could not be found
此文件位于包中。
当我使用%do%
代替%dopar%
a <- 2
fun1 <- function(x)
{
y <- x*a
return(y)
}
fun2 <- function(n)
{
foreach(data = 1:n, .combine = rbind, .multicombine = TRUE, .export = c("a","fun1")) %dopar%
{
load_all() # Works, get error if line is removed
y <- fun1(data)
return(y)
}
}
在我的主文件中,我使用devtools::load-all()
加载程序包,并使用doParallel
在多个核心上运行我的foreach,在收到错误时执行fun2(5)
。
如果我直接在foreach函数体中使用a
,一切正常。但是当我使用一个使用a
变量的函数时,我得到了错误。
我的主要问题是我无法从fun1
调用函数fun2
以及从包中单独调用。
群集创建为
cl <- makeCluster(16)
registerDoParallel(cl)
clusterCall(cl, function(x) .libPaths(x), .libPaths())
# %dopar% code
stopCluster(cl)