是否可以将Rcpp函数传递给子进程?

时间:2017-11-29 03:38:14

标签: r rcpp

我已经使用Rcpp定义了一个函数,它在当前会话中运行。所以我尝试使用future包在每个工作进程中编译相同的函数,但是我遇到了错误

  

错误:构建共享库时出现错误1。

是否有一种简单的方法来共享Rcpp功能而无需构建包?

见下面的MWE

library(Rcpp)
cppFunction('
            NumericVector test(Rcpp::NumericVector x) {
            return x;
            }')

# test if compiled successful
test(1:2)

lapply(list(1:2), test) # works

future_lapply(list(1:2), function(a) {
  library(Rcpp)
  cppFunction('
     NumericVector test(Rcpp::NumericVector x) {
     return x;
  }')
  test(a)
 })

1 个答案:

答案 0 :(得分:4)

这个问题实际上相当于通过foreach传播基于Rcpp的函数。简而言之,您无法序列化基于Rcpp的函数并将其传递。

他们坐在“随机”的本地记忆点。唯一可靠的方法是将它们粘在一个包中,让每个工人加载包。这将有效。