Kom igångKom igång gratis

Exporterade och icke-exporterade funktioner

Funktioner som är dekorerade med den speciella kommentaren [[Rcpp::export]] görs tillgängliga i R-konsolen. Det är dock oftast inte önskvärt att exportera varje funktion till R. Vissa funktioner kan i stället hållas interna i C++. Det rör sig vanligtvis om beräkningsfunktioner på lägre nivå eller hjälpfunktioner.

Kom ihåg funktionen som beräknar avståndet från en punkt i det tvådimensionella rummet till origo:

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

Här ska du uppdatera koden så att funktionen dist (som exporteras) anropar en icke-exporterad funktion square som helt enkelt kvadrerar ett double-värde.

Den här övningen är en del av kursen

Optimera R-kod med Rcpp

Visa kurs

Övningsinstruktioner

  • Slutför definitionen av square() så att den tar emot och returnerar ett double-värde, …
  • som är lika med x gånger x.
  • Uppdatera definitionen av dist() så att den använder square(). Det vill säga, returnera kvadratroten av summan av kvadraten på x och kvadraten på y.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

#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(___ + ___);
}
Redigera och kör kod