Funciones exportadas y no exportadas
Las funciones decoradas con el comentario especial [[Rcpp::export]] están disponibles en la consola de R. Sin embargo, normalmente no querrás exportar todas las funciones a R. En su lugar, algunas funciones pueden mantenerse internas en C++. Suelen ser funciones de cálculo de bajo nivel o utilidades.
Recuerda la función que calcula la distancia desde un punto en el espacio 2D al origen:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
Aquí, vas a actualizar el código para que la función dist (que sí se exporta) llame a una función no exportada square que simplemente eleva al cuadrado un double.
Este ejercicio forma parte del curso
Optimizar código de R con Rcpp
Instrucciones del ejercicio
- Completa la definición de
square()para que acepte y devuelva undouble, … - que sea igual a
xporx. - Actualiza la definición de
dist()para que usesquare(). Es decir, que devuelva la raíz cuadrada de la suma del cuadrado dexy el cuadrado dey.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
#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(___ + ___);
}