从 sourceCpp 移动到带有 RcppArmadillo 的包

Moving from sourceCpp to a package with RcppArmadillo

这与 post 关于从 sourceCpp 移动到带有 Rcpp 的包 Moving from sourceCpp to a package w/Rcpp 有点相关。但是,我在 Mac OS X 10.10.4 上使用 RcppArmadillo 并且无法使包正常工作。使用sourceCpp的文件如下:

#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]

using namespace Rcpp;

// [[Rcpp::export]]
arma::mat cholcalcCpp(arma::mat& SS, arma::umat& Aadj){

  int p = SS.n_rows;
  arma::mat L(p,p);
  arma::mat D(p,p);

  L = arma::eye(p,p);
  D = arma::eye(p,p);

  return (L*sqrt(D));
}

尝试使用 R Studio 通过“项目”>“创建项目”>“包”w/Rcpp 创建一个新项目也没有用,因为我一直收到一条错误消息,提示无法识别命令 arma。我尝试在 RccpExports.cpp 文件中添加 #include <RcppArmadillo.h>,但每次我尝试构建和重新加载时,Rstudio 都会删除该行。谁能建议我如何从 .cpp 文件转到 RccpArmadillo 包?谢谢。

有些地方可能是错误的。首先,您确实需要修改 DESCRIPTION 文件以包含 LinkingTo: Rcpp, RcppArmadillo 并确保 #include <RcppArmadillo.h> 存在于 /src 目录中的每个 .cpp 文件中。您还需要包含两个 Makevars 文件。

Makevars.winMakevars 以及:

PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)

有关设置 RStudio 以将 RcppArmadillo 作为包使用的完整演练,请参阅:

http://thecoatlessprofessor.com/programming/setting-up-rstudio-to-work-with-rcpparmadillo/

这个错误基本上是你的:

Trying to use R Studio to create a new project using Project>Create Project>Package w/Rcpp didn't work either

没有人说过 'Package with Rcpp' 和 'Package with RcppArmadillo' 是一样的。您只是误解了 RStudio 为您提供的好意。

RcppArmadillo 被 CRAN 上的 200 多个包使用。有时最简单的方法是复制其中一个,将其剥离并从以这种方式创建的框架开始。当然,还有一种更简单且已记录的方法:使用我们为这个用例编写的RcppArmadilllo.package.skeleton()函数:创建一个RcppArmadillo 的基本(工作)包。