【发布时间】:2011-06-13 12:13:33
【问题描述】:
我正在尝试使用 foreach 在 R 中进行多核计算。
A <-function(....) {
foreach(i=1:10) %dopar% {
B()
}
}
然后我在控制台中调用函数A。问题是我在B 内调用了一个函数Posdef,该函数在我提供的另一个脚本文件中定义。我不得不将Posdef 放在foreach 的导出参数列表中:.export=c("Posdef")。但是我收到以下错误:
Error in { : task 3 failed - "could not find function "Posdef""
为什么 R 找不到这个定义的函数?
【问题讨论】:
-
我建议搜索有关使用 R 进行动态作用域的信息。这根本不直观,您会发现很多关于 SO 的问题详细说明了人们在函数中定义函数时遇到的问题。
-
我们希望有一个可重现的例子。另外,您是否尝试过降雪进行多核处理?我发现它更直观,更容易适应(修改应用功能)。
-
同样的问题,暂时没有找到简单的答案。我设法通过调用 4 个核心 foreach(j=1:N、.combine=rbind、.packages=c(调用所有功能所需的包向量))%dopar% fun(j) 使其工作。它提高了速度,但不会除以 4(仅除以 2)我不确定我做了什么,所以不要复制这个..
-
我通过导出每个有问题的函数来解决我的问题,这里建议使用
clusterExport(cl, 'myMean')stackoverflow.com/questions/17879766/…
标签: r foreach parallel-processing multicore scoping