更改 R 包的 exportPattern 以隐藏 Rcpp 函数

changing R packages' exportPattern to hide Rcpp functions

我正在使用 Rcpp 函数编写 R 包。我需要在 R 代码中调用一些 Rcpp 函数,但最终使用的函数不可见。我正在使用 devtools 基础设施来促进开发过程。在使用 Rcpp 之前,我曾经用“.”来隐藏 R 函数 "internals"。名称前的前缀。因此 exportPattern("^[[:alpha:]]+") 够了。我在所有 Rcpp C++ 函数上使用了 "Cpp" 后缀。在我的包中,其中 none 旨在供最终用户使用,但所有这些都需要由导出到最终用户的 R 函数使用。我已经把 // [[Rcpp::export]] 放在它们的定义之前,我用 export 替换了 exportPattern(所有需要导出的函数用逗号分隔)。但是我有一个包含大量要导出的函数列表的包,因此我想知道是否可以重写“^[[:alpha:]]+”以便不导出所有以“.”开头的函数。或以 "Cpp".

结尾

最后,我发现我只需要在 Rcpp::export 附近附加一个括号,并按照我希望在 R 中看到的方式命名该函数(也以 . 开头)。例如

// [[Rcpp::export(.mult3sum)]]
double mult3sum(NumericVector x, NumericVector y, NumericVector z)
{
 double total=0;
 int n = x.size();
  for(int i = 0; i < n; ++i) {
   total += x[i]*y[i]*z[i];
  }
 return total;
}

将在 R 中被视为 .mult3sum