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
Oefeninstructies
- Maak de definitie van
square()af zodat deze eendoubleaccepteert en retourneert, … - die gelijk is aan
xmaalx. - Werk de definitie van
dist()bij omsquare()te gebruiken. Dus: retourneer de vierkantswortel van de som van het kwadraat vanxen het kwadraat vany.
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(___ + ___);
}