gpt4 book ai didi

r - 在foreach循环中找不到函数

转载 作者:行者123 更新时间:2023-12-03 12:44:59 25 4
gpt4 key购买 nike

我正在尝试使用foreach在R中进行多核计算。

A <-function(....) {
foreach(i=1:10) %dopar% {
B()
}
}

然后我在控制台中调用 A函数。问题是我在 Posdef中调用了函数 B,该函数在我提供的另一个脚本文件中定义。我不得不将 Posdef放在 foreach的输出参数列表中: .export=c("Posdef")。但是我得到以下错误:
Error in { : task 3 failed - "could not find function "Posdef""

为什么R无法找到此定义的函数?

最佳答案

简短的答案是,这是并行后端(例如doSNOWdoParalleldoMPI)中的一个错误,但此后已得到修复。

稍长一点的答案是,foreach使用特殊的“导出”环境(而不是全局环境)将功能导出给 worker 。这通常会导致在全局环境中创建的功能出现问题,因为“导出”环境不在其范围内,即使它们现在是在同一“导出”环境中定义的也是如此。因此,他们看不到在“导出”环境中定义的任何其他函数或变量,例如您的情况下的“Posdef”。
doSNOWdoParalleldoMPI后端现在将通过“.export”导出的函数的关联环境从全局环境更改为“export”环境,并且似乎已经解决了这些问题。

关于r - 在foreach循环中找不到函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4765256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com