Funkcje C++ należą do plików C++

Optymalizacja kodu R za pomocą Rcpp

Romain François

Consulting Datactive, ThinkR

Przypomnienie z kursu

evalCpp()

evalCpp( "40 + 2" )
42

cppFunction()

cppFunction( "int fun(){ return 42; }")
fun()
42
Optymalizacja kodu R za pomocą Rcpp

Kod C++ w code.cpp

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

Funkcja sourceCpp() kompiluje i wczytuje plik

library(Rcpp)

sourceCpp( "code.cpp" )
timesTwo( 21 )
42
Optymalizacja kodu R za pomocą Rcpp

Dołączanie nagłówka Rcpp

#include <Rcpp.h>
_____ _________ ____ _

__ ________________
___ _________ ___ _ __
  ______ ___ _
_
  • Należy dołączać tylko Rcpp.h

    • Automatycznie dołącza wszystkie pozostałe pliki nagłówkowe
Optymalizacja kodu R za pomocą Rcpp

Przestrzeń nazw Rcpp

#include <Rcpp.h>
using namespace Rcpp ;

__ ________________
___ _________ ___ _ __
  ______ ___ _
_
  • Użycie Something zamiast Rcpp::Something, gdy Something należy do Rcpp
Optymalizacja kodu R za pomocą Rcpp

Eksportowanie funkcji do R

#include <Rcpp.h>
using namespace Rcpp ;

// [[Rcpp::export]]
___ _________ ___ _ __
  ______ ___ _
_
Optymalizacja kodu R za pomocą Rcpp

Sama funkcja

#include <Rcpp.h>
using namespace Rcpp ;

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

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

Wczytanie funkcji do R

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

Wywołanie jak każdej innej funkcji R.

timesTwo( 21 )
42
Optymalizacja kodu R za pomocą Rcpp

Czas na ćwiczenia!

Optymalizacja kodu R za pomocą Rcpp

Preparing Video For Download...