我在程序包中内置了一些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)
}