Hàm C++ thuộc về các tệp C++

Tối ưu hóa mã R với Rcpp

Romain François

Consulting Datactive, ThinkR

Trước đó, trong khóa học này

evalCpp()

evalCpp( "40 + 2" )
42

cppFunction()

cppFunction( "int fun(){ return 42; }")
fun()
42
Tối ưu hóa mã R với Rcpp

Mã C++ trong code.cpp

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

Hàm sourceCpp() biên dịch và nạp nó

library(Rcpp)

sourceCpp( "code.cpp" )
timesTwo( 21 )
42
Tối ưu hóa mã R với Rcpp

Include header Rcpp

#include <Rcpp.h>
_____ _________ ____ _

__ ________________
___ _________ ___ _ __
  ______ ___ _
_
  • Chỉ include Rcpp.h

    • Nó tự động include mọi header khác
Tối ưu hóa mã R với Rcpp

Dùng namespace Rcpp

#include <Rcpp.h>
using namespace Rcpp ;

__ ________________
___ _________ ___ _ __
  ______ ___ _
_
  • Dùng Something thay vì Rcpp::Something khi Something thuộc Rcpp
Tối ưu hóa mã R với Rcpp

Export hàm sang R

#include <Rcpp.h>
using namespace Rcpp ;

// [[Rcpp::export]]
___ _________ ___ _ __
  ______ ___ _
_
Tối ưu hóa mã R với Rcpp

Bản thân hàm

#include <Rcpp.h>
using namespace Rcpp ;

// [[Rcpp::export]]
int timesTwo( int x ){
  return 2*x ;
}
Tối ưu hóa mã R với Rcpp
#include <Rcpp.h>
using namespace Rcpp ;

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

nạp hàm vào R

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

Gọi như bất kỳ hàm R nào.

timesTwo( 21 )
42
Tối ưu hóa mã R với Rcpp

Cùng luyện tập nào!

Tối ưu hóa mã R với Rcpp

Preparing Video For Download...