Otimizando código R com Rcpp
Romain François
Consulting Datactive, ThinkR
Classes de vetor em Rcpp:
NumericVector para manipular vetores numeric, ex.: c(1,2,3)IntegerVector para integer, ex.: 1:3LogicalVector para logical, ex.: c(TRUE, FALSE)CharacterVector para strings, ex.: c("a", "b", "c")Também:
List para listas, ou seja, vetores de objetos R arbitráriosMétodos mais importantes:
x.size() retorna o número de elementos do vetor xx[i] retorna o elemento na posição i do vetor xA indexação em C++ começa em 0. O índice é um deslocamento a partir da primeira posição.
// primeiro elemento do vetor
x[0]
// último elemento
x[x.size()-1]
A indexação em R começa em 1.
# primeiro
x[1]
# último
x[length(x)]

// x vem de outro lugar (calma ...)
NumericVector x = ... ;
double value = x[0] ;
x[0] = 12.0 ;
// x vem de outro lugar (calma ...)
NumericVector x = ... ;
int n = x.size() ;
double value = x[n-1] ;
x[n-1] = 12.0 ;
// x vem de outro lugar
NumericVector x = ... ;
int n = x.size() ;
for( int i=0; i<n; i++){
// manipular x[i]
}
Otimizando código R com Rcpp