匯出與不匯出的函式
加上 [[Rcpp::export]] 這個特殊註解的函式,會在 R 主控台中可用。不過,你通常不會想把每個函式都匯出到 R。有些函式可以只在 C++ 內部使用,通常是更低階的計算或工具函式。
回想一下計算 2D 空間中某點到原點距離的函式:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
在這裡,你要更新程式碼,讓被匯出的 dist 函式呼叫一個未匯出的 square 函式,該函式只負責將一個 double 平方。
本練習屬於課程
用 Rcpp 最佳化 R 程式碼
練習說明
- 完成
square()的定義,讓它接受並回傳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(___ + ___);
}