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