Após os ajustes na função Cquantile anterior, chegamos na seguinte função:
#include <Rcpp.h>
using namespace Rcpp;
using namespace std;
// [[Rcpp::export]]
NumericVector Cquantile(NumericVector x, NumericVector probs) {
Environment stats("package:stats");
Function quantile = stats["quantile"];
int npr = probs.size();
NumericVector res(npr);
for(int i=0; i<npr; i++){
res[i] = as<double>(quantile(x, probs[i]));
}
return res;
}
Para testar se a nova função Quantile do Rcpp está funcionando de acordo, fizemos um teste para ver se ela está gerando os resultados como o esperado:
## Testando no R se a Cquantile funciona de acordo com o esperado:
> set.seed(22)
> Cquantile(rnorm(1000000,0,1),c(0.025,0.975))
[1] -1.963335 1.960857
Como podemos ver, os valores {~ -1.96; ~ 1.96} estão de acordo com o esperado para os quantis determinados acima.