Funções C++ pertencem a arquivos C++

Otimizando código R com Rcpp

Romain François

Consulting Datactive, ThinkR

Até aqui, neste curso

evalCpp()

evalCpp( "40 + 2" )
42

cppFunction()

cppFunction( "int fun(){ return 42; }")
fun()
42
Otimizando código R com Rcpp

Código C++ em code.cpp

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

A função sourceCpp() compila e carrega

library(Rcpp)

sourceCpp( "code.cpp" )
timesTwo( 21 )
42
Otimizando código R com Rcpp

Incluir o header do Rcpp

#include <Rcpp.h>
_____ _________ ____ _

__ ________________
___ _________ ___ _ __
  ______ ___ _
_
  • Inclua apenas Rcpp.h

    • Ele inclui automaticamente todos os outros headers
Otimizando código R com Rcpp

Usando o namespace Rcpp

#include <Rcpp.h>
using namespace Rcpp ;

__ ________________
___ _________ ___ _ __
  ______ ___ _
_
  • Use Something em vez de Rcpp::Something quando Something estiver em Rcpp
Otimizando código R com Rcpp

Exportando a função para o R

#include <Rcpp.h>
using namespace Rcpp ;

// [[Rcpp::export]]
___ _________ ___ _ __
  ______ ___ _
_
Otimizando código R com Rcpp

A própria função

#include <Rcpp.h>
using namespace Rcpp ;

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

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

carregue a função no R

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

Chame como qualquer outra função R.

timesTwo( 21 )
42
Otimizando código R com Rcpp

Vamos praticar!

Otimizando código R com Rcpp

Preparing Video For Download...