LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Vervollständige die Definition von square(), sodass sie ein double entgegennimmt und ein double zurückgibt, …
  • das gleich x mal x ist.
  • Aktualisiere die Definition von dist(), um square() zu verwenden. Also soll die Quadratwurzel der Summe aus dem Quadrat von x und dem Quadrat von y zurü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(___ + ___);
}
Code bearbeiten und ausführen