Chapter 11 R 함수 사용하기

계산속도를 높이기 위해 Rcpp을 사용하지만, 이미 R에서 짜여진 함수를 다시 C++ 코드로 수정하는 것 또한 매우 어려운 일이다. 하지만 다음과 같은 형식으로 R 패키지에 있는 함수를 C++ 구문에서 사용할 수 있다.

11.1 R 패키지 내의 함수 사용

패키지의 포함된 함수의 경우는 다음과 같이 Environment를 설정해주어 R 함수 사용이 가능하다.

다음은 MASS 패키지의 huber() 함수를 사용하는 예시이다.

// [[Rcpp::export]]
double huber_cpp(Rcpp::NumericVector x) {
    // R 패키지 Environment 가져오기
    Rcpp::Environment env("package:MASS");

    // MASS::huber() 함수를 가져와서 "huber_r"이라는 함수로 사용한다는 설정
    Rcpp::Function huber_r = env["huber"];

    // 위에서 지정한 함수명으로 R 함수 실행(함수의 input은 List 형태로 들어감)
    return huber_r(Rcpp::_["y"] = x,
                   Rcpp::_["k"] = 1.5);
}