R foreach并行和包变量

时间:2018-05-01 08:50:16

标签: r r-package parallel-foreach

我有以下代码,我收到如下错误:

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)

0 个答案:

没有答案