Exportierte und nicht exportierte Funktionen
Funktionen, die mit dem speziellen Kommentar [[Rcpp::export]] versehen sind, werden in der R-Konsole verfügbar gemacht. In der Regel möchtest du jedoch nicht jede Funktion nach R exportieren. Stattdessen können manche Funktionen intern in C++ bleiben. Das sind oft niedrigere Berechnungsfunktionen oder Hilfsfunktionen.
Erinnere dich an die Funktion, die den Abstand eines Punkts im 2D-Raum zum Ursprung berechnet:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
Hier aktualisierst du den Code so, dass die exportierte Funktion dist eine nicht exportierte Funktion square aufruft, die lediglich ein double quadriert.
Diese Übung ist Teil des Kurses
R-Code mit Rcpp optimieren
Anleitung zur Übung
- Vervollständige die Definition von
square(), sodass sie eindoubleentgegennimmt und eindoublezurückgibt, … - das gleich
xmalxist. - Aktualisiere die Definition von
dist(), umsquare()zu verwenden. Also soll die Quadratwurzel der Summe aus dem Quadrat vonxund dem Quadrat vonyzurückgegeben werden.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
#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(___ + ___);
}