MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Lengkapi definisi square() agar menerima dan mengembalikan sebuah double, …
  • yang bernilai sama dengan x kali x.
  • Perbarui definisi dist() untuk menggunakan square(). Yaitu, mengembalikan akar kuadrat dari jumlah kuadrat x dan kuadrat y.

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(___ + ___);
}
Edit dan Jalankan Kode