Indexeren van een vector
Indexeren in C++ begint bij 0, dus het kan helpen om de index te zien als een offset vanaf het begin van de vector. x[0] heeft offset 0 en geeft het eerste element van x.
Deze oefening maakt deel uit van de cursus
R-code optimaliseren met Rcpp
Oefeninstructies
- Maak de definitie af van een functie,
first_plus_last(), die de som geeft van de eerste en laatste waarde van eenNumericVector. - Zet
ngelijk aan desize()vanx. - Zet
firstgelijk aan het eerste element vanx. - Zet
lastgelijk aan het laatste element vanx.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
#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])
*/