带Rcpp包的foreach不会导出对象

时间:2019-04-01 12:48:46

标签: foreach parallel-processing rcpp

我在程序包中内置了一些Rcpp代码,我正在尝试使用foreach来加快执行速度。

我已经使用了foreach的.export和.packages参数来导出必要的项目,但仍然收到以下错误消息

Error in { : task 1 failed - "Object was created without names."

我基本上已经按照此处看到的主要指示将Rcpp代码与foreach并行化:a)构建了一个程序包b)导出了必要的变量,并且c)包括了必要的程序包。

我在Windows上。可能有影响(或没有影响)的一件事是Rcpp代码使用了一些函数和其他变量,这些函数和其他变量是从R全局环境中获取的,例如

Rcpp::Environment base("package:zipfR"); 

或     环境env = Environment :: global_env();     NumericMatrix GaussHermiteTable = env [“ GaussHermite”];

当我使用%do%而不是%dopar%时,代码可以正常工作。 list_packages变量包含函数正常运行时(即,使用%do%而不是%dopar%。)加载的所有软件包。

n<-30
Var1Vector <- 1:n
Var2Vector <- 1:n

 finalMatrix <- foreach::foreach(i = 1:n, .packages = list_packages, .export    = ls(globalenv())) %dopar% {

   Var1<-Var1Vector[i]
   Var2<-Var2Vector[i]

   ThisValue<-MyPackage::MyFunction(Var1, Var2)

 }

0 个答案:

没有答案