R에서는 Ziggurat 샘플러를 사용하려고하지만 실제로는 C++ 코드에서 직접 사용하려고합니다. GSL 라이브러리 인 RcppGSL과 RcppZiggurat를 설치하고 R에서 zrnorm()을 사용하면 문제가 없습니다. 나는 RcppZiggurat.pdf에서 제공되는 코드 샘플을 컴파일하고, C++ 코드에서 Ziggurat sampler를 직접 구현하려고 시도한다고 생각했지만 ... 다음은 발생하지만 ...RcppZiggurat 예제 코드를 컴파일 할 수 없습니다.
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++) {
x[i] = zigg.norm();
}
return x;
}
// [[Rcpp::export]]
void zsetseed(unsigned long int s) {
zigg.setSeed(s);
return;
}
오류 : 내가 어떻게 여기에서 진행하는 전혀 단서가 없다
official_zigg_code.cpp:2:10: fatal error: 'Ziggurat.h' file not found
#include <Ziggurat.h>
^
1 error generated.
make: *** [official_zigg_code.o] Error 1
clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -
I/usr/local/include/freetype2 -I/opt/X11/include -
I"/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include" -fPIC -Wall -
mtune=core2 -g -O2 -c official_zigg_code.cpp -o official_zigg_code.o
Error in Rcpp::sourceCpp("official_zigg_code.cpp") :
Error 1 occurred building shared library.
. 필자는 스택 교환에 대한 답을 찾기 위해 필사적으로 노력했지만 아무 것도이 문제를 해결하는 데 도움이되지 않습니다. 내가 RcppZiggurat 패키지가 실제로 위의 함수를 사용한다는 것을 이해하면 zrnorm()을 직접 사용할 수있을 때 어떻게 컴파일 할 수 있습니까?
대단히 감사합니다. 이제 작동합니다. 처음 프로그래머로서 때로는 꽤 압도적 인 일이 될 수 있지만, 상당히 명확 할 것으로 기대하고있었습니다. 확실히 문서를 더 깊이 파헤 치려고합니다. – Affaeng