使用RcppArmadillo从sourceCpp迁移到包

时间:2016-06-24 19:07:08

标签: r rcpp armadillo

这与关于从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创建一个新项目使用Project&gt;创建项目&gt;包w / Rcpp无法正常工作,因为我不断收到错误消息,说明命令arma无法识别。我尝试在RccpExports.cpp文件中添加#include <RcppArmadillo.h>,但每次尝试构建和重新加载时Rstudio都会删除该行。任何人都可以建议我如何从.cpp文件转到RccpArmadillo包?谢谢。

2 个答案:

答案 0 :(得分:1)

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

Makevars.winMakevars

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

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

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

答案 1 :(得分:1)

错误基本上属于你的错误:

  

尝试使用R Studio创建一个新项目使用Project&gt;创建项目&gt;包含w / Rcpp无法正常工作

没有人说'带有Rcpp的套餐'与'带有RcppArmadillo的套餐'相同。你只是误解了RStudio向你提供的东西。

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