【发布时间】:2013-06-28 10:23:21
【问题描述】:
我正在尝试在全局环境中未定义的另一个函数中使用parLapply。 worker 函数使用了我想事先clusterExport 的 other 函数列表,这些函数也没有在全局环境中定义。我的问题是这两个函数都将它们的评估环境导出到集群中,这些集群非常庞大且不需要。
让我们调用worker函数workerFunction和函数列表functionList。
workerFunction <- function(i) {
intermediateOutput <- functionList[[i]](y)
result <- otherCalculations(intermediateOutput)
return(result)
}
library(parallel)
cl <- makeCluster(detectCores())
environment(workerFunction) <- .GlobalEnv
environment(functionList) <- .GlobalEnv
clusterExport(cl, varlist=c("functionList", "y"), envir=.GlobalEnv)
output <- parLapply(cl, inputVector, workerFunction)
我明白了:
Error in get(name, envir = envir) (from <text>#53) : object 'functionList' not found
如果我不设置environment(functionList) <- .GlobalEnv,那么functionList 的巨大封闭环境将导出到集群。为什么R在全局环境中找不到functionList?
【问题讨论】:
标签: r parallel-processing environment-variables