ÎncepețiÎncepe gratuit

Creează un vector cu valori specificate

În loc să definești un vector și să îi completezi elementele ulterior, poți crea un vector și specifica valorile sale într-o singură linie de cod, folosind ::create(). Aceasta este o funcție membră statică, adică o metodă a tipului de vector în sine, nu a unei variabile de tip vector. Poți specifica până la 20 de elemente cu create. (Pentru vectori mai lungi, va trebui să folosești mai multe linii de cod.)

Următorul cod creează un vector numeric, important_numbers, care conține pi, e și infinit.

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

::create poate fi folosit și pentru a crea vectori cu nume. Sintaxa pentru a numi elementele este _["name"] = value. Iată același cod, de data aceasta cu elementele denumite.

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

La fel ca în R, dacă vrei să combini variabile de tipuri diferite într-o singură variabilă, folosești o listă. În versiunea Rcpp, tipul se scrie cu majusculă: este un List.

Acest exercițiu face parte din cursul

Optimizarea codului R cu Rcpp

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează definiția unei funcții, create_vectors(), care creează câțiva vectori.
    • Creează un vector de caractere fără nume, polygons, care să conțină valorile "triangle", "square" și "pentagon", în această ordine.
    • Creează un vector de întregi cu nume, mersenne_primes, care să conțină valorile 3, 7 și 31, în această ordine. Numele elementelor trebuie să fie "first", "second" și "third".
    • Creează o listă cu nume, both, care să conțină polygons și mersenne_primes, în această ordine. Numele elementelor trebuie să fie tot polygons și mersenne_primes.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

#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()
*/
Editează și rulează codul