Tối ưu hóa mã R với Rcpp
Romain François
Consulting Datactive, ThinkR
evalCpp( "40+2" )
42
cppFunction( "double add( double x, double y){
return x + y ;
}")
add( 40, 2 )
42
for( init ; condition ; increment ){
body
}
init: chạy lúc bắt đầucondition: có tiếp tục vòng lặp khôngincrement: sau mỗi vòng lặpbody: vòng lặp làm gìfor( int i=0; i<n; i++){
// làm gì đó với i
}
NumericVector x = ... ;
int n = x.size() ;
// giá trị đầu tiên
x[0]
// giá trị thứ hai
x[1]
// giá trị cuối
x[n-1]
#include <Rcpp.h>
using namespace Rcpp ;
// [[Rcpp::export]]
double add( double x, double y){
return x + y ;
}
// [[Rcpp::export]]
double twice( double x){
return 2.0 * x;
}
#include <Rcpp.h>
using namespace Rcpp ;
// [[Rcpp::export]]
double fun( NumericVector x ){
// trích dữ liệu đầu vào và chuẩn bị đầu ra
int n = x.size() ;
double res = 0.0 ;
// lặp qua đầu vào và/hoặc đầu ra
for(int i=0; i<n; i++){
// làm gì đó với x[i]
}
// trả về kết quả
return res ;
}
Tối ưu hóa mã R với Rcpp