更改 R 包的导出模式以隐藏 Rcpp 函数

changing R packages' exportPattern to hide Rcpp functions

本文关键字:隐藏 Rcpp 函数 模式 更改      更新时间:2023-10-16

我正在使用Rcpp函数编写一个R包。我需要一些Rcpp函数在R代码中调用,但不能被最终使用的函数看到。我正在使用devtools基础设施来促进开发过程。在使用Rcpp之前,我曾通过名称前的"."prexif来隐藏作为"内部"的R函数。因此exportPattern("^[:alpha:]]+")已经足够了。我在所有Rcpp C++函数上都使用了"Cpp"后缀。在我的包中,它们都不打算由最终用户使用,但所有这些都需要由导出到最终用户的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