Optimera R-kod med Rcpp
Romain François
Consulting Datactive, ThinkR
Rcpp-vektorklasser:
NumericVector för numeric-vektorer, t.ex. c(1,2,3)IntegerVector för integer, t.ex. 1:3LogicalVector för logical, t.ex. c(TRUE, FALSE)CharacterVector för strängar, t.ex. c("a", "b", "c")Även:
List för listor, dvs. vektorer av godtyckliga R-objektViktigaste metoderna:
x.size() returnerar antalet element i vektorn xx[i] returnerar elementet på position i i vektorn xIndexering i C++ börjar på 0. Indexet är en offset från första positionen.
// first element of the vector
x[0]
// last element
x[x.size()-1]
Indexering i R börjar på 1.
# first
x[1]
# last
x[length(x)]

// x comes from somewhere else (patience ...)
NumericVector x = ... ;
double value = x[0] ;
x[0] = 12.0 ;
// x comes from somewhere else (patience ...)
NumericVector x = ... ;
int n = x.size() ;
double value = x[n-1] ;
x[n-1] = 12.0 ;
// x comes from somewhere
NumericVector x = ... ;
int n = x.size() ;
for( int i=0; i<n; i++){
// manipulate x[i]
}
Optimera R-kod med Rcpp