Funcții exportate și neexportate
Funcțiile marcate cu comentariul special [[Rcpp::export]] devin disponibile în consola R. Totuși, de obicei nu vrei să exporți fiecare funcție în R. Unele funcții pot rămâne interne în C++ – de obicei sunt funcții de calcul de nivel jos sau funcții utilitare.
Reamintește-ți funcția care calculează distanța de la un punct din spațiul 2D la origine:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
În acest exercițiu, vei actualiza codul astfel încât funcția dist (care este exportată) să apeleze o funcție neexportată, square, care ridică la pătrat un double.
Acest exercițiu face parte din cursul
Optimizarea codului R cu Rcpp
Instrucțiuni pentru exercițiu
- Completează definiția funcției
square()astfel încât să accepte și să returneze undouble, … - care este egal cu
xînmulțit cux. - Actualizează definiția funcției
dist()pentru a folosisquare(). Adică, returnează rădăcina pătrată a sumei dintre pătratul luixși pătratul luiy.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
#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(___ + ___);
}