CommencezCommencez gratuitement

Indexer un vecteur

En C++, l'indexation commence à 0, donc il peut être utile d'imaginer l'indice comme un décalage à partir du début du vecteur. x[0] est au décalage 0 et correspond au premier élément de x.

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 first_plus_last() qui calcule la somme de la première et de la dernière valeur d'un NumericVector.
  • Attribuez à n la valeur de size() de x.
  • Attribuez à first le premier élément de x.
  • Attribuez à last le dernier élément de x.

Exercice interactif pratique

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

#include 
using namespace Rcpp;

// [[Rcpp::export]]
double first_plus_last(NumericVector x) {
    // The size of x
    int n = ___;
    // The first element of x
    double first = ___;
    // The last element of x
    double last = ___;
    return first + last;
}

/*** R
x <- c(6, 28, 496, 8128)
first_plus_last(x)
# Does the function give the same answer as R?
all.equal(first_plus_last(x), x[1] + x[4])
*/
Modifier et exécuter le code