Les fonctions C++ appartiennent aux fichiers C++

Optimiser le code R avec Rcpp

Romain François

Consulting Datactive, ThinkR

Plus tôt dans ce cours

evalCpp()

evalCpp( "40 + 2" )
42

cppFunction()

cppFunction( "int fun(){ return 42; }")
fun()
42
Optimiser le code R avec Rcpp

Code C++ dans code.cpp

#include <Rcpp.h>
using namespace Rcpp ; 
// [[Rcpp::export]]
int timesTwo( int x ){
  return 2*x ; 
}

La fonction sourceCpp() le compile et le charge

library(Rcpp)

sourceCpp( "code.cpp" )
timesTwo( 21 )
42
Optimiser le code R avec Rcpp

Inclure l'en-tête Rcpp

#include <Rcpp.h>
_____ _________ ____ _

__ ________________
___ _________ ___ _ __
  ______ ___ _
_
  • Inclure seulement Rcpp.h

    • Il inclut automatiquement les autres en-têtes
Optimiser le code R avec Rcpp

Utiliser l'espace de noms Rcpp

#include <Rcpp.h>
using namespace Rcpp ;

__ ________________
___ _________ ___ _ __
  ______ ___ _
_
  • Utilisez Something plutôt que Rcpp::Something lorsque Something est dans Rcpp
Optimiser le code R avec Rcpp

Exporter la fonction vers R

#include <Rcpp.h>
using namespace Rcpp ;

// [[Rcpp::export]]
___ _________ ___ _ __
  ______ ___ _
_
Optimiser le code R avec Rcpp

La fonction elle-même

#include <Rcpp.h>
using namespace Rcpp ;

// [[Rcpp::export]]
int timesTwo( int x ){
  return 2*x ;
}
Optimiser le code R avec Rcpp
#include <Rcpp.h>
using namespace Rcpp ;

// [[Rcpp::export]]
int timesTwo( int x ){
  return 2*x ;}

charger la fonction dans R

library(Rcpp)
sourceCpp( "code.cpp" )

L'appeler comme toute autre fonction R.

timesTwo( 21 )
42
Optimiser le code R avec Rcpp

Passons à la pratique !

Optimiser le code R avec Rcpp

Preparing Video For Download...