Я читаю главу 4 «Полная интеграция R и C++ с Rcpp», и у меня была небольшая проблема.Как правильно использовать Rcpp :: pt()
В «листинге 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 :: пт не имеют успеха. Мой код здесь.
#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 :: пт (х, 3) Я хочу, чтобы иметь контроль над параметрами де од функции
pt(q, df, ncp, lower.tail = TRUE, log.p = FALSE)
Я думаю, что я не правильно использовать функцию де но я не Не знаю, что.
Поскольку у вас есть некоторые ответы ниже, которые, кажется, чтобы ответить на ваш вопрос, пожалуйста, пометьте один из них, как «Принято», нажав на tickmark ниже их подсчет голосов. Это показывает, какой ответ вам больше всего помог, и он присваивает репутации автору ответа (и вам!). Это часть идеи этого сайта, чтобы выявить хорошие вопросы и ответы посредством ответов и принятия ответов. – Jubobs