ComenzarEmpieza gratis

Crear vector con valores dados

En lugar de definir un vector y luego rellenar sus elementos, es posible crear un vector y especificar sus valores en una sola línea de código usando ::create(). Esta es una función miembro estática, es decir, es un método del propio tipo de vector, no de una variable de tipo vector. Puedes especificar hasta 20 elementos con create. (Para vectores más largos, tendrás que usar varias líneas de código.)

El siguiente código crea un vector numérico, important_numbers, que contiene pi, e e infinito.

NumericVector numbers = NumericVector::create(PI, exp(1), INFINITY);

::create también puede usarse para crear vectores con nombre. La sintaxis para nombrar elementos es _["name"] = value. Aquí tienes el mismo código de antes, esta vez nombrando los elementos.

NumericVector numbers = NumericVector::create(_["pi"] = PI, _["e"] = exp(1), _["inf"] = INFINITY);

Igual que en R, si quieres combinar variables de distintos tipos en otra variable, usas una lista. En la versión de Rcpp, el tipo va en mayúscula: es un List.

Este ejercicio forma parte del curso

Optimizar código de R con Rcpp

Ver curso

Instrucciones del ejercicio

  • Completa la definición de una función, create_vectors(), que cree algunos vectores.
    • Crea un vector de caracteres sin nombres, polygons, con los valores "triangle", "square" y "pentagon", en ese orden.
    • Crea un vector entero con nombre, mersenne_primes, con los valores 3, 7 y 31, en ese orden. Los nombres deben ser "first", "second" y "third".
    • Crea una lista con nombre, both, que contenga polygons y mersenne_primes, en ese orden. Los nombres también deben ser polygons y mersenne_primes.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

#include 
using namespace Rcpp;

// [[Rcpp::export]]
List create_vectors() {
  // Create an unnamed character vector
  CharacterVector polygons = CharacterVector::___("___", "___", "___");
  // Create a named integer vector
  IntegerVector mersenne_primes = ___(_["___"] = ___, ___, ___);
  // Create a named list
  List both = ___(___, ___);
  return both;
}

/*** R
create_vectors()
*/
Editar y ejecutar código