Secuencia de enteros
Las funciones que escribiste en ejercicios anteriores hacían cálculos y devolvían un único número. También puedes escribir funciones que devuelvan un vector.
La sintaxis para crear un vector consiste en especificar el tipo de vector seguido del nombre de la variable y, entre paréntesis, el número de elementos. Por ejemplo, para crear un vector numérico llamado numbers con 10 elementos, el código sería el siguiente.
NumericVector numbers(10);
Este ejercicio forma parte del curso
Optimizar código de R con Rcpp
Instrucciones del ejercicio
- Completa la definición de una función,
seq_cpp(), que reciba dos enterosloyhiy devuelva unIntegerVectorcon los números entre ambos.- Establece el tipo de retorno como
IntegerVector. - Crea un nuevo vector de enteros,
sequence, de tamañon. - Dentro del bucle
for, asigna al elemento i-ésimo desequenceel valorlomási. - Devuelve
sequence.
- Establece el tipo de retorno como
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
#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))
*/