IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Completa la definizione di una funzione, seq_cpp(), che prende due interi lo e hi e restituisce un IntegerVector con i numeri compresi tra loro.
    • Imposta il tipo di ritorno a IntegerVector.
    • Crea un nuovo vettore di interi, sequence, di dimensione n.
    • All’interno del ciclo for, assegna all’elemento i-esimo di sequence lo più i.
    • Restituisci sequence.

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))
*/
Modifica ed esegui il codice