包函数中的foreach:在第一次调用时不起作用

时间:2011-07-15 19:26:15

标签: function r package multicore domc

我正在尝试将并行计算选项添加到基于doMC和多核的R(netresponse)包中。该脚本可以正常工作,但仅限于第二次试用。

要重现该错误,请启动R并运行下面的脚本。它停留在最后一行。在用ctrl-c中断后,我得到一些“select:Interrupted system call”的消息。然后,再次运行相同的脚本将给出预期的结果没有问题。

是否需要进行一些初始化才能在第一次运行时正常工作?还是其他任何提示?

感谢您的支持, - L


require(netresponse)
require(multicore)
require(doMC)   
registerDoMC(3)
print(getDoParWorkers())
res <- foreach(i = 1:100, .combine = cbind, 
        .packages = "netresponse") %dopar% netresponse::vdp.mixt(matrix(rnorm(1000), 100, 10))

2 个答案:

答案 0 :(得分:1)

来自package netsese的帮助页面中的依赖项列表:“取决于:方法,igraph,graph,minet”。我怀疑你没有通过在.packages论证中列出“netresponse”来将所有这些内容全部交给工人。

答案 1 :(得分:0)

快速修复foreach%dopar%的问题是重新安装这些软件包:

install.packages("doSNOW")

install.packages("doParallel") 

install.packages("doMPI")

如StackOverflow中的各种线程所述,它们负责R中的并行性。现在删除了旧版本的这些软件包中存在的Bug。我应该提一下,即使你没有在你的项目/包中使用这些包,它也很有帮助。