Aan de slagGa gratis aan de slag

Geëxporteerde en niet-geëxporteerde functies

Functies die zijn voorzien van de speciale comment [[Rcpp::export]] worden beschikbaar gemaakt in de R-console. Meestal wil je echter niet elke functie naar R exporteren. Sommige functies houd je liever intern in C++. Dit zijn vaak lagere-level rekenfuncties of hulpfuncties.

Herinner je de functie die de afstand berekent van een punt in de 2D-ruimte tot de oorsprong:

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

Hier ga je de code aanpassen zodat de functie dist (die wordt geëxporteerd) een niet-geëxporteerde functie square aanroept die simpelweg een double kwadrateert.

Deze oefening maakt deel uit van de cursus

R-code optimaliseren met Rcpp

Cursus bekijken

Oefeninstructies

  • Maak de definitie van square() af zodat deze een double accepteert en retourneert, …
  • die gelijk is aan x maal x.
  • Werk de definitie van dist() bij om square() te gebruiken. Dus: retourneer de vierkantswortel van de som van het kwadraat van x en het kwadraat van y.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

#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(___ + ___);
}
Code bewerken en uitvoeren