我尝试使用R中的doParallel
包来减少代码的运行时间。
我正在调用一个函数awareRateSIR
,在这个函数的主体中使用了一些额外的包。我得到一些错误,如
无法找到功能" vcount"和..
我知道vcount
是igraph
中使用的包awareRateSIR
的函数,但它并不是唯一的。{1}}。我怎么解决这个问题?我以为我应该传递我的函数awareRateSIR
中使用的所有包名,但我不知道如何在foreach
中导出多个函数或者如何导出多个包名称。
这是我的代码:
tp<-foreach(i=1:iter, .inorder = FALSE, .export = "awareRateSIR",
.packages = "igraph", .packages="doParallel")%dopar%{
tp <- awareRateSIR(graphContact, graphCom,state)
return(tp)
}
如果我没有通过这些软件包,我会收到错误状态,如果我通过所有软件包,我会收到一些函数错误:
foreach中的错误(i = 1:iter,.inorder = FALSE,.export = &#34; awareRateSIR&#34;,:正式参数&#34; .packages&#34;匹配多个 实际论点&#34;
提前致谢
答案 0 :(得分:8)
您应该使用c
函数传递所需的所有包,如下所示:
tp<-foreach(i=1:iter, .inorder = FALSE, .export = "awareRateSIR",
.packages = c("igraph", "doParallel"))%dopar%{
tp <- awareRateSIR(graphContact, graphCom,state)
return(tp)
}
答案 1 :(得分:0)
通常,在使用foreach时,您不需要导出任何变量,函数或包。
对于变量和函数,它们只需要与foreach
语句位于相同的环境中(更好的方法是创建一个只传递所需内容的函数)。
当其他软件包需要函数时,您只需使用package::function
,就像内部软件包一样。