ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Completa la definición de square() para que acepte y devuelva un double, …
  • que sea igual a x por x.
  • Actualiza la definición de dist() para que use square(). Es decir, que devuelva la raíz cuadrada de la suma del cuadrado de x y el cuadrado de y.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

#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(___ + ___);
}
Editar y ejecutar código