Je suis débutant dans l'utilisation de Rcpp et je veux obtenir une sélection plus rapide des valeurs des vecteurs après le calcul des quantiles. Dans l'exemple ci-dessous, il fonctionne bien lorsque les limites inférieures et supérieures
calculées par la fonction qnorm sont entrées manuellement (fonction val.sel.1). Cependant, lorsque ces limites proviennent d'un calcul préalable, aucun vecteur résultant n'est obtenu (fonction val.sel.2). Je me demande ce qui ne va pas dans l'utilisation des arguments. Merci d'avance pour toute aide. AlainRcpp: utilisation pratique des comparateurs
R> src.1 <-'
NumericVector x = xx, p = prob;
int n = p.size() ;
int m = x.size() ;
NumericVector res(n), quant ;
for(int i=0; i<n; i++) res[i] = R::qnorm(p[i], Rcpp::mean(x), Rcpp::sd(x), 1, 0) ;
for(int i=0; i<m; i++) {
if (x[i] > 35.45295 && x[i] < 83.34705) quant.push_back(x[i]);
}
return wrap(quant) ;
'
R> val.sel.1 <- cxxfunction(signature(xx="numeric", prob="numeric"), plugin='Rcpp', body=src.1)
R> x <- c(77, 95, 16, 54, 63, 93, 44, 88, 25, 39)
R> val.sel.1(x, prob=c(0.2,0.8)) # [1] 77 54 63 44 39
R> src.2 <-'
NumericVector x = xx, p = prob;
int n = p.size() ;
int m = x.size() ;
NumericVector res(n), quant ;
for(int i=0; i<n; i++) res[i] = R::qnorm(p[i], Rcpp::mean(x), Rcpp::sd(x), 1, 0) ;
for(int i=0; i<m; i++) {
if (x[i] > res[1] && x[i] < res[2]) quant.push_back(x[i]);
}
return wrap(quant) ;
'
R> val.sel.2 <- cxxfunction(signature(xx="numeric",prob="numeric"),plugin='Rcpp', body=src.2)
R> val.sel.2(x, prob=c(0.2,0.8)) # numeric(0)
Je suis désolé mais je ne comprends pas votre question. –