CommencerCommencer gratuitement

Suite d'entiers

Les fonctions que vous avez écrites dans les exercices précédents effectuaient des calculs puis renvoyaient un seul nombre. Vous pouvez aussi écrire des fonctions qui renvoient 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);

Cet exercice fait partie du cours

Optimiser du code R avec Rcpp

Afficher le cours

Instructions

  • Complétez la définition d’une fonction seq_cpp() qui prend deux entiers lo et hi et renvoie un IntegerVector contenant les nombres entre les deux.
    • 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.
    • Renvoyez sequence.

Exercice interactif pratique

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

#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