내보내는 함수와 내보내지 않는 함수
[[Rcpp::export]] 특수 주석이 달린 함수는 R 콘솔에서 사용할 수 있습니다. 하지만 모든 함수를 R로 내보내고 싶지는 않을 때가 많습니다. 대신 일부 함수는 C++ 내부 전용으로 둘 수 있습니다. 보통 더 낮은 수준의 계산 함수나 유틸리티 함수가 여기에 해당합니다.
2차원 공간의 한 점에서 원점까지의 거리를 계산하는 함수를 떠올려 보세요:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
이번에는 내보내지는 square 함수를 만들어 double 값을 제곱만 하도록 하고, 내보내지는 dist 함수(즉, R로 내보내는 함수)가 이를 호출하도록 코드를 업데이트해 보겠습니다.
이 연습은 강의의 일부입니다
Rcpp로 R 코드 최적화하기
연습 안내
square()가double을 입력받아double을 반환하도록 정의를 완성하세요, …- 반환값은
x곱하기x가 되도록 하세요. dist()의 정의를square()를 사용하도록 수정하세요. 즉,x의 제곱과y의 제곱을 더한 값의 제곱근을 반환하도록 하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
#include
using namespace Rcpp;
// Make square() accept and return a double
___ square(___ x) {
// Return x times x
return ___ ;
}
// [[Rcpp::export]]
double dist(double x, double y) {
// Change this to use square()
return sqrt(___ + ___);
}