Optimiser le code R avec Rcpp
Romain François
Consulting Datactive, ThinkR
Classes de vecteurs Rcpp :
NumericVector pour manipuler des vecteurs numeric, p. ex. c(1,2,3)IntegerVector pour integer, p. ex. 1:3LogicalVector pour logical, p. ex. c(TRUE, FALSE)CharacterVector pour les chaînes, p. ex. c("a", "b", "c")Aussi :
List pour les listes, soit des vecteurs d'objets R arbitrairesMéthodes clés :
x.size() retourne le nombre d'éléments du vecteur xx[i] retourne l'élément à la position i dans le vecteur xEn C++, l'indexation commence à 0. L'index est un décalage depuis la première position.
// premier élément du vecteur
x[0]
// dernier élément
x[x.size()-1]
En R, l'indexation commence à 1.
# premier
x[1]
# dernier
x[length(x)]

// x vient d'ailleurs (patience…)
NumericVector x = ... ;
double value = x[0] ;
x[0] = 12.0 ;
// x vient d'ailleurs (patience…)
NumericVector x = ... ;
int n = x.size() ;
double value = x[n-1] ;
x[n-1] = 12.0 ;
// x vient d'ailleurs
NumericVector x = ... ;
int n = x.size() ;
for( int i=0; i<n; i++){
// manipuler x[i]
}
Optimiser le code R avec Rcpp