如何使用parLapply将参数从外部函数传递给内部函数

时间:2017-11-20 13:40:20

标签: r parallel-processing

我正在尝试创建一个执行并行引导例程的R函数,但是在parLapply中传递函数参数时遇到了困难。 下面是一个(希望)可重现的示例,其中集群无法找到参数的值:

(?:)

1 个答案:

答案 0 :(得分:1)

这是parallel::clusterExport的棘手问题之一。正如文档中所述,

clusterExport assigns the values on the master R process of the variables named in varlist to variables of the same names in the global environment (aka ‘workspace’) of each node

也就是说,它在全局环境中查找变量名称。默认的environment参数也演示了此

clusterExport(cl = NULL, varlist, envir = .GlobalEnv)

您需要为功能(非全局)环境指定环境

clusterExport(cl, args, env = environment())

在您的情况下,请更新到

parallel::clusterExport(cl, varlist = ARGS, env = environment())

替换为更新版本,这会导致res1

的输出
           50%
1   0.11379733
2  -0.01619026
3   0.05117174
4  -0.11234621
5   0.37001881
6   0.07445315
7   0.01455376
8  -0.03924000
9   0.01481569
10  0.18364332