Rcpp 패키지로 R에서 c++ 함수 호출하기

R을 쓰다보면 효율성 등을 이유로 c++ 사용을 할 수밖에 없는 상황이 발생할 수도 있다.. 이럴 때, Rcpp 패키지를 사용하자.

간혹 옛날 코드 중에서는 Rcpp을 사용하지 않고, c++ 와 R을 연동해서 사용하는 경우도 있지만 이보다는 Rcpp 패키지를 사용하는 게 훨씬 간편하다. 따라서 Rcpp 을 사용해보자.

우선, 오늘 예제에서 호출할 c++ 코드는 아래와 같다.

#include <Rcpp.h>
#include <iostream>
using namespace std;

// [[Rcpp::export]]
double add_func(double a, double b){
  return a+b;
}

위 함수 add_func은 주어진 입력값 두개를 더한 값을 return하는 아주 간단한 함수이다. 이때, 위에 명시된 [[Rcpp::export]]라는 attribute가 꼭 명시되어야함을 주의하자. 왜냐하면 R에서 사용될 sourceCpp 메소드가 이 attribute가 붙은 함수를 찾기 때문이다.

이제 R에서 c++로 작성된 add_func 함수를 사용해보자. 이를 위한 코드는 아래와 같다.

참고

R에서 Rcpp 패키지를 먼저 설치해야한다!


library("Rcpp")

sourceCpp("sample_code1.cpp") # sample_code1.cpp 파일 경로를 입력해야함

resultl <- add_func(1,2)
print(resultl)

이제 위 R 파일을 실행해보면 아래와 같은 결과를 얻을 수 있다.

[1] 3

추가적으로, R과 c++ 연동 시 input 값과 return 값의 type을 지정하는 법 관련해서 아래 글을 참조하자.

태그:

카테고리:

업데이트:

댓글남기기