Rcpp ile R Kodunu Optimize Etme
Romain François
Consulting Datactive, ThinkR
// N(0,1)'den tek sayı
double x = R::rnorm( 0, 1 ) ;
// U(-2,2)'den tek sayı
double y = R::runif( -2, 2 ) ;
// ...
Rcpp:: ad alanındaki rastgele sayı üreteçleri.
NumericVector x = rnorm(10, 0, 2) ;
// aşağıdakinin aynısı
// çünkü using namespace Rcpp ;
//
// NumericVector x = Rcpp::rnorm(10, 0, 2) ;
Alternatif: R:: içindeki skaler sürümlerle
// aynısı
NumericVector x(10) ;
for(int i=0; i<10; i++){
x[i] = R::rnorm(0, 2) ;
}

// n sayı üretiriz
NumericVector x(n) ;
// vektörü döngüde doldur
for( int i=0; i<n; i++){
// d pozitif olana kadar üretmeye devam et
double d ;
do {
d = ... ;
} while( d < 0 ) ;
x[i] = d ;
}

int component( NumericVector weights, double total_weight ){
// seçilen bileşenin indeksini döndür}
NumericVector rmix( int n, NumericVector weights, NumericVector means,
NumericVector sds ){
NumericVector res(n) ;
for( int i=0; i<n; i++){
// hangi bileşenin kullanılacağını bul
...
// seçilen bileşenin mean ve sd'siyle simüle et
... }
return res ;
}
Rcpp ile R Kodunu Optimize Etme