我一直在尝试设置一个旨在在 RStudio 中使用 Rcpp 的 R 包,但我正在努力让 Rcpp 属性正常工作。
我对它的工作原理的理解相当薄弱,但我的理解如下:
- 在源 C++ 文件中,您可以添加 Rcpp 属性,例如标记
// [[Rcpp::export]]
标记要导出的 C++ 函数,使其可用于 R。 - 当您构建包时,
Rcpp
然后在文件中生成适当的 C++ 代码RcppExports.cpp
,并在 R 源文件中生成包装函数RcppExports.R
。
当我构建我的包时,这似乎不能正常工作(如我所料)。在生成 NAMESPACE 文件时,Roxygen 不能很好地使用它(所以我禁用了它)。该标记// [[Rcpp::export]]
似乎只是标记要导出到 R 的函数,而不是标记要导出到包命名空间的函数。
// [[Rcpp::depends()]]
更重要的是,没有正确处理Rcpp Attribute 标签。如果我将此处的代码复制到一个新的源文件中,并重新构建我的包,则会在文件gcc
上引发错误,指出标识符未声明,表明属性标记未正确处理。RcppExports.cpp
BigMatrix
// [[Rcpp::depends(bigmemory)]]
由于许多事情没有按我的预期工作,我对 Rcpp 属性标签的理解缺少什么?