Sequenza di interi
Le funzioni che hai scritto negli esercizi precedenti eseguivano calcoli e poi restituivano un singolo numero. Puoi anche scrivere funzioni che restituiscono un vettore.
La sintassi per creare un tipo vettoriale consiste nello specificare il tipo del vettore seguito dal nome della variabile e, tra parentesi, il numero di elementi del vettore. Per esempio, per creare un vettore numerico chiamato numbers contenente 10 elementi, il codice sarà il seguente.
NumericVector numbers(10);
Questo esercizio fa parte del corso
Ottimizzare il codice R con Rcpp
Istruzioni dell'esercizio
- Completa la definizione di una funzione,
seq_cpp(), che prende due interiloehie restituisce unIntegerVectorcon i numeri compresi tra loro.- Imposta il tipo di ritorno a
IntegerVector. - Crea un nuovo vettore di interi,
sequence, di dimensionen. - All’interno del ciclo
for, assegna all’elemento i-esimo disequencelopiùi. - Restituisci
sequence.
- Imposta il tipo di ritorno a
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
#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))
*/