C++ 함수는 C++ 파일에 속합니다

Rcpp로 R 코드 최적화하기

Romain François

Consulting Datactive, ThinkR

이전 강의 복습

evalCpp()

evalCpp( "40 + 2" )
42

cppFunction()

cppFunction( "int fun(){ return 42; }")
fun()
42
Rcpp로 R 코드 최적화하기

code.cpp의 C++ 코드

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

sourceCpp() 함수로 컴파일 및 로드

library(Rcpp)

sourceCpp( "code.cpp" )
timesTwo( 21 )
42
Rcpp로 R 코드 최적화하기

Rcpp 헤더 파일 포함하기

#include <Rcpp.h>
_____ _________ ____ _

__ ________________
___ _________ ___ _ __
  ______ ___ _
_
  • Rcpp.h 포함하면 됩니다

    • 다른 모든 헤더 파일이 자동으로 포함됩니다
Rcpp로 R 코드 최적화하기

Rcpp 네임스페이스 사용하기

#include <Rcpp.h>
using namespace Rcpp ;

__ ________________
___ _________ ___ _ __
  ______ ___ _
_
  • SomethingRcpp에 속할 경우, Rcpp::Something 대신 Something을 사용합니다
Rcpp로 R 코드 최적화하기

R로 함수 내보내기

#include <Rcpp.h>
using namespace Rcpp ;

// [[Rcpp::export]]
___ _________ ___ _ __
  ______ ___ _
_
Rcpp로 R 코드 최적화하기

함수 본체

#include <Rcpp.h>
using namespace Rcpp ;

// [[Rcpp::export]]
int timesTwo( int x ){
  return 2*x ;
}
Rcpp로 R 코드 최적화하기
#include <Rcpp.h>
using namespace Rcpp ;

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

R로 함수 불러오기

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

다른 R 함수처럼 호출합니다.

timesTwo( 21 )
42
Rcpp로 R 코드 최적화하기

연습해 봅시다!

Rcpp로 R 코드 최적화하기

Preparing Video For Download...