エクスポートされる関数とされない関数
[[Rcpp::export]] という特別なコメントを付けた関数は、R コンソールから利用できるようになります。ただし、すべての関数を R にエクスポートしたいわけではありません。代わりに、一部の関数は C++ 内部にとどめます。これらは多くの場合、より低レベルな計算やユーティリティの関数です。
2 次元空間の点から原点までの距離を計算する関数を思い出してください。
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
ここでは、エクスポートされる dist 関数が、double を二乗するだけのエクスポートしない square 関数を呼び出すようにコードを更新します。
この演習はコースの一部です
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(___ + ___);
}