【发布时间】:2017-08-24 20:01:19
【问题描述】:
我正在尝试从在包外工作的代码构建一个 R 包。我的第一次尝试是相当复杂的嵌套函数,最终使用 doMPI 和 foreach 进行并行处理。还在 Ubuntu 16.04 上使用 RStudio 1.01.43。我构建了软件包并且工作正常。然后,当我尝试运行调用 next 的顶级函数时,它会引发错误:
Error in { : task 6 failed - "object 'RunOys' not found"
我在调用顶级函数之前手动设置布尔变量 RunOys=TRUE,当它下降到为 ifelse 语句调用此变量的那个时,它会失败。在调用顶级函数之前,我检查 globalenv() 和
> RunOys
[1] TRUE
在 foreach 并行代码中,我有这个语句,它在编译成 R 包之前一直有效:
FinalCalcs <- function (...) {
results <- data.frame ( foreach::`%dopar%`(
foreach::`%:%`(foreach::foreach(j = 1:NumSim, .combine = acomb,
.options.mpi=opts1),
foreach::foreach (i = 1:PopSize, .combine=rbind,
.options.mpi=opts2,
.export = c(ls(globalenv())),
.packages = c("zoo", "msm", "FAdist", "qmra"))),
{
它应该将 globalenv() 中的所有对象导出到每个从站。
我不明白为什么有些变量似乎被传递了,而其他变量却没有。我是否需要在文件中为调用它的函数明确指定它为@param?
【问题讨论】:
-
如果你想超级脏,试试
.export = c(ls(globalenv(), ls(environment()), ls(parent.frame()))。