Fungsi diekspor dan tidak diekspor
Fungsi yang diberi komentar khusus [[Rcpp::export]] akan tersedia di konsol R. Namun, biasanya Anda tidak ingin mengekspor setiap fungsi ke R. Sebagai gantinya, beberapa fungsi dapat tetap internal di C++. Ini sering kali berupa fungsi perhitungan tingkat rendah atau fungsi utilitas.
Ingat kembali fungsi yang menghitung jarak dari suatu titik di ruang 2D ke titik asal:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
Di sini, Anda akan memperbarui kode sehingga fungsi dist (yang diekspor) memanggil fungsi square yang tidak diekspor dan hanya melakukan kuadrat terhadap sebuah double.
Latihan ini adalah bagian dari kursus
Mengoptimalkan Kode R dengan Rcpp
Petunjuk latihan
- Lengkapi definisi
square()agar menerima dan mengembalikan sebuahdouble, … - yang bernilai sama dengan
xkalix. - Perbarui definisi
dist()untuk menggunakansquare(). Yaitu, mengembalikan akar kuadrat dari jumlah kuadratxdan kuadraty.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
#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(___ + ___);
}