【问题标题】:R foreach nested function not finding arguments to functions using do.callR foreach嵌套函数没有使用do.call找到函数的参数
【发布时间】:2017-09-04 15:45:11
【问题描述】:

我正在尝试从许多函数中整合一个 R 包。所有工作,包括涉及 foreach 和 do.call 的顶级工作。由于某种原因,当我打包它们时,它不会找到嵌套在第三层的函数的参数对象。这是我得到的错误

Error in { : task 2 failed - "object 'total.dose.params' not found"

我已经在https://github.com/jamaas/qmradoparr.git 组装了一个 mwe

我已经尝试了所有使用 .export 和其他方法的方法,但仍然无法找到这个对象。在 repo 中有一个名为 driver1.R 的非常小的 R 脚本,它应该可以演示该问题。

【问题讨论】:

    标签: r function foreach arguments


    【解决方案1】:

    您不需要导出任何变量,只需将foreach 使用的每个变量传递给它的环境(传递给调用foreach 的函数)。

    我已为您的包裹添加了pull request

    【讨论】:

    • 谢谢。这是一个奇怪的问题,当我使用您的更改运行它时,它运行良好。当我将后端从 doParallel 更改为 doMPI 时,它失败了,找不到对象(其中一个函数)。我最近看到了一些关于在 foreach 循环中使用 eval(call("function")) 而不是 do.call 并使用 mpi 作为后端的内容,但现在找不到。
    • @JimMaas 我不知道,抱歉。我总是使用doParallel。你有理由绝对要使用doMPI吗?
    • 我确实需要它用于大型 Linux 集群,希望在多个节点上并行处理约 400 个内核,doMPI 做得很好......如果它有效!
    猜你喜欢
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 2012-03-12
    • 2018-08-29
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多