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
Instructions
- Complétez la définition d’une fonction
seq_cpp()qui prend deux entiersloethiet renvoie unIntegerVectorcontenant les nombres entre les deux.- Définissez le type de retour à
IntegerVector. - Créez un nouveau vecteur d’entiers
sequencede taillen. - Dans la boucle
for, affectez à l’élément i desequencela valeurloplusi. - Renvoyez
sequence.
- Définissez le type de retour à
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))
*/