RcppZiggurat无法编译示例代码 我试图在R中使用ZiggurAT采样器,但是实际上希望直接在C++代码中使用它。我安装了GSL库、RcppGSL和RcppZiggurat,并且在R中使用zrnorm()工作得很好。我想OK,让我们尝试编译RCPPPZigGurAT.PDF中提供的代码示例,然后从那里直接在C++代码中实现ZiggurAT采样器…但以下情况发生了
从pdf文件中,我认为我可以简单地利用:RcppZiggurat无法编译示例代码 我试图在R中使用ZiggurAT采样器,但是实际上希望直接在C++代码中使用它。我安装了GSL库、RcppGSL和RcppZiggurat,并且在R中使用zrnorm()工作得很好。我想OK,让我们尝试编译RCPPPZigGurAT.PDF中提供的代码示例,然后从那里直接在C++代码中实现ZiggurAT采样器…但以下情况发生了,r,rcpp,R,Rcpp,从pdf文件中,我认为我可以简单地利用: #include <Rcpp.h> #include <Ziggurat.h> static Ziggurat::Ziggurat::Ziggurat zigg; // [[Rcpp::export]] Rcpp::NumericVector zrnorm(int n) { Rcpp::NumericVector x(n); for (int i=0; i<n; i++
#include <Rcpp.h>
#include <Ziggurat.h>
static Ziggurat::Ziggurat::Ziggurat zigg;
// [[Rcpp::export]]
Rcpp::NumericVector zrnorm(int n) {
Rcpp::NumericVector x(n);
for (int i=0; i<n; i++) {
x[i] = zigg.norm();
}
return x;
}
// [[Rcpp::export]]
void zsetseed(unsigned long int s) {
zigg.setSeed(s);
return;
}
#包括
#包括
静态Ziggurat::Ziggurat::Ziggurat zigg;
//[[Rcpp::导出]]
Rcpp::数值向量zrnorm(int n){
Rcpp::数值向量x(n);
对于(int i=0;i而言,误差相当明显:
fatal error: 'Ziggurat.h' file not found
这意味着您没有告诉R/R编译器关于RcppZiggurat的事情
修复很简单。如果是通过sourceCpp()
进行Rcpp驱动的编译,请添加
这一行
// [[Rcpp::depends(RcppZiggurat)]]
所有这些都是用Rcpp记录的,你或多或少都会阅读其中的一些文档
如果要在Rcpp之外生成,需要确保编译器找到头文件.I通常使用-I
标志,这通常在介绍编译器的地方讨论。非常感谢。现在就可以使用了。我希望这一点非常明显,但是作为一名初级程序员,有时可能会让人不知所措。我肯定会深入研究文档。
// [[Rcpp::depends(RcppZiggurat)]]