CommencerCommencer gratuitement

Fonctions exportées et non exportées

Les fonctions annotées avec le commentaire spécial [[Rcpp::export]] sont disponibles dans la console R. Toutefois, vous ne souhaitez généralement pas tout exporter vers R. Certaines fonctions peuvent rester internes au C++. Il s’agit souvent de fonctions de calcul de bas niveau ou d’utilitaires.

Rappelez-vous la fonction qui calcule la distance d’un point dans l’espace 2D à l’origine :

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

Ici, vous allez modifier le code pour que la fonction dist (qui est exportée) appelle une fonction non exportée square qui met simplement au carré un double.

Cet exercice fait partie du cours

Optimiser du code R avec Rcpp

Afficher le cours

Instructions

  • Complétez la définition de square() pour qu’elle accepte et retourne un double, …
  • égal à x multiplié par x.
  • Mettez à jour la définition de dist() pour utiliser square(). Autrement dit, retourner la racine carrée de la somme du carré de x et du carré de y.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

#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(___ + ___);
}
Modifier et exécuter le code