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
Övningsinstruktioner
- Slutför definitionen av
square()så att den tar emot och returnerar ettdouble-värde, … - som är lika med
xgångerx. - Uppdatera definitionen av
dist()så att den användersquare(). Det vill säga, returnera kvadratroten av summan av kvadraten påxoch 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(___ + ___);
}