【发布时间】:2016-06-24 19:07:08
【问题描述】:
这与关于从 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>Create Project>Package w/Rcpp 创建新项目也不起作用,因为我一直收到错误消息,提示无法识别命令 arma。我尝试在 RccpExports.cpp 文件中添加#include <RcppArmadillo.h>,但每次我尝试构建和重新加载时,Rstudio 都会删除该行。谁能建议我如何从 .cpp 文件转到 RccpArmadillo 包?谢谢。
【问题讨论】:
-
DESCRIPTION文件中有LinkingTo: Rcpp, RcppArmadillo吗? -
你也可以从
RcppArmadillo.package.skeleton()开始。 -
感谢@Coatless 和@Dirk。我已经设法让它构建和加载,但现在当我尝试从 R 调用函数时出现以下错误:
Error in .Primitive(".Call")(<pointer: 0x0>, S, adj) : NULL value passed as symbol address。知道是什么原因造成的吗? -
我设法通过从头开始重写整个包并使用不同的名称来修复错误
Error in .Primitive(".Call")(<pointer: 0x0>, S, adj) : NULL value passed as symbol address。我不完全确定它为什么会起作用。