Я читаю главу 4 "Полная интеграция R и С++ с Rcpp", и у меня была небольшая проблема.
В "листинге 4.13" книга привела пример о том, как использовать функцию R. Я пробовал использовать другие функции (разные в примере), и у меня был успех. Мой код здесь:
#include <Rcpp.h>
// [[Rcpp::export]]
Rcpp::DataFrame myrandom(Rcpp::NumericVector x) {
int n = x.size();
Rcpp::NumericVector y1(n), y2(n), y3(n);
y1 = Rcpp::pexp(x,1.0,1,0);
y2 = Rcpp::pnorm(x,0.0,1.0,1,0);
y3 = Rcpp::ppois(x,3.0,1,0);
return Rcpp::DataFrame::create(Rcpp::Named("Exp") = y1,Rcpp::Named("Norm") = y2, Rcpp::Named("Pois") = y3);
}
sourceCpp("random.cpp")
myrandom(c(0.5,1))
В этом случае все в порядке, но когда я пытаюсь использовать Rcpp:: pt, у меня нет успеха. Мой код здесь.
#include <Rcpp.h>
// [[Rcpp::export]]
Rcpp::DataFrame myrandom2(Rcpp::NumericVector x) {
int n = x.size();
Rcpp::NumericVector y1(n);
y1 = Rcpp::pt(x,3.0,0,1,0);
return Rcpp::DataFrame::create(Rcpp::Named("T") = y1);
}
sourceCpp("random2.cpp")
myrandom2(c(0.5,1))
/Library/Frameworks/R.framework/Versions/3.0/Resources/library/Rcpp/include/Rcpp/stats/nt.h: In function ‘Rcpp::stats::P2<RTYPE, NA, T> Rcpp::pt(const Rcpp::VectorBase<RTYPE, NA, VECTOR>&, double, double, bool, bool) [with int RTYPE = 14, bool NA = true, T = Rcpp::Vector<14>]’:
random2.cpp:8: instantiated from here
/Library/Frameworks/R.framework/Versions/3.0/Resources/library/Rcpp/include/Rcpp/stats/nt.h:25: error: invalid conversion from ‘double (*)(double, double, int, int)’ to ‘double (*)(double, double, double, int, int)’
/Library/Frameworks/R.framework/Versions/3.0/Resources/library/Rcpp/include/Rcpp/stats/nt.h:25: error: initializing argument 1 of ‘Rcpp::stats::P2<RTYPE, NA, T>::P2(double (*)(double, double, double, int, int), const Rcpp::VectorBase<RTYPE, NA, VECTOR>&, double, double, bool, bool) [with int RTYPE = 14, bool NA = true, T = Rcpp::Vector<14>]’
make: *** [random2.o] Error 1
llvm-g++-4.2 -arch x86_64 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -I"/Library/Frameworks/R.framework/Versions/3.0/Resources/library/Rcpp/include" -fPIC -mtune=core2 -g -O2 -c random2.cpp -o random2.o
Когда я использую Rcpp:: pt (x, 3), я хочу иметь контроль над параметрами od function
pt(q, df, ncp, lower.tail = TRUE, log.p = FALSE)
Я думаю, что я не правильно использую функцию, но я не знаю, что.