始める無料で始める

エクスポートされる関数とされない関数

[[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(___ + ___);
}
コードを編集して実行