CommencezCommencez gratuitement

Séquence d'entiers

Les fonctions que vous avez écrites dans les exercices précédents effectuaient des calculs puis retournaient un seul nombre. Vous pouvez aussi écrire des fonctions qui retournent un vecteur.

La syntaxe pour créer un type vecteur consiste à indiquer le type du vecteur, suivi du nom de la variable, puis du nombre d'éléments du vecteur entre parenthèses. Par exemple, pour créer un vecteur numérique nommé numbers contenant 10 éléments, le code serait le suivant.

NumericVector numbers(10);

Cette activité fait partie du cours

Optimiser le code R avec Rcpp

Voir le cours

Instructions de l’exercice

  • Complétez la définition d'une fonction seq_cpp() qui prend deux entiers lo et hi et retourne un IntegerVector des nombres entre ces deux valeurs.
    • Définissez le type de retour à IntegerVector.
    • Créez un nouveau vecteur d'entiers sequence de taille n.
    • Dans la boucle for, affectez à l'élément i de sequence la valeur lo plus i.
    • Retournez sequence.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

#include 
using namespace Rcpp;

// Set the return type to IntegerVector
// [[Rcpp::export]]
___ seq_cpp(int lo, int hi) {
  int n = hi - lo + 1;
    
  // Create a new integer vector, sequence, of size n
  ___;
    
  for(int i = 0; i < n; i++) {
    // Set the ith element of sequence to lo plus i
    ___;
  }
  
  return ___;
}

/*** R
lo <- -2
hi <- 5
seq_cpp(lo, hi)
# Does it give the same answer as R's seq() function?
all.equal(seq_cpp(lo, hi), seq(lo, hi))
*/
Modifier et exécuter le code