【发布时间】:2015-04-16 16:19:40
【问题描述】:
这是一个玩具示例来说明我的问题。
library(foreach)
library(doMC)
registerDoMC(cores=2)
foreach(i = 1:2) %dopar%{
i + 2
}
[[1]]
[1] 3
[[2]]
[1] 4
到目前为止一切都很好......
但是,如果代码 i + 2 保存在文件 addition.R 中,并且我使用 source() 调用该文件,那么
> foreach(i = 1:2) %dopar%{
+ source("addition.R")
+ }
Error in { : task 1 failed - "object 'i' not found"
【问题讨论】:
-
试试这个
source("addtition.R",local=T)来评估调用它的环境中的源 -
我发现 %dopar% 块中的 source() 调用显着减慢了计算速度,因为子进程必须通过网络获取该源文件