Reeks gehele getallen
De functies die je in eerdere oefeningen schreef, voerden berekeningen uit en gaven één getal terug. Je kunt ook functies schrijven die een vector teruggeven.
De syntaxis om een vector te maken is: geef eerst het type van de vector op, gevolgd door de naam van de variabele, gevolgd door het aantal elementen in de vector tussen haakjes. Om bijvoorbeeld een numerieke vector numbers met 10 elementen te maken, gebruik je de volgende code.
NumericVector numbers(10);
Deze oefening maakt deel uit van de cursus
R-code optimaliseren met Rcpp
Oefeninstructies
- Maak de definitie af van een functie
seq_cpp()die twee gehele getallenloenhikrijgt en eenIntegerVectorteruggeeft met de getallen daartussen.- Stel het geretourneerde type in op
IntegerVector. - Maak een nieuwe integervector
sequencemet grootten. - Stel binnen de
for-lus het ide element vansequencein oploplusi. - Retourneer
sequence.
- Stel het geretourneerde type in op
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
#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))
*/