IniziaInizia gratis

Funzioni esportate e non esportate

Le funzioni contrassegnate con il commento speciale [[Rcpp::export]] vengono rese disponibili nella console R. Tuttavia, in genere non vuoi esportare ogni funzione in R. Alcune funzioni, invece, possono restare interne a C++. Spesso si tratta di funzioni di calcolo di livello più basso o di utilità.

Ricorda la funzione che calcola la distanza dall’origine di un punto nello spazio 2D:

double dist( double x, double y) {
  return sqrt( x*x + y*y ) ;
}

Qui aggiornerai il codice in modo che la funzione dist (che è esportata) richiami una funzione non esportata square che si limita a elevare al quadrato un double.

Questo esercizio fa parte del corso

Ottimizzare il codice R con Rcpp

Visualizza il corso

Istruzioni dell'esercizio

  • Completa la definizione di square() in modo che accetti e restituisca un double, …
  • che sia uguale a x per x.
  • Aggiorna la definizione di dist() per usare square(). Cioè, per restituire la radice quadrata della somma del quadrato di x e del quadrato di y.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

#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(___ + ___);
}
Modifica ed esegui il codice