開始使用免費開始

匯出與不匯出的函式

加上 [[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(___ + ___);
}
編輯並執行程式碼