Začněte nyníZačněte zdarma

Vytvoření vektoru se zadanými hodnotami

Místo toho, abys nejdřív definoval/a vektor a pak postupně naplnil/a jeho prvky, můžeš vektor vytvořit a rovnou zadat jeho hodnoty na jednom řádku pomocí ::create(). Jde o statickou členskou funkci — tedy metodu samotného typu vektoru, nikoli konkrétní proměnné. Pomocí create lze zadat až 20 prvků. (Pro delší vektory je potřeba použít více řádků kódu.)

Následující kód vytvoří číselný vektor important_numbers obsahující hodnoty pi, e a nekonečno.

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

::create lze použít také k vytváření pojmenovaných vektorů. Syntaxe pro pojmenování prvků je _["name"] = value. Tady je stejný kód, tentokrát s pojmenovanými prvky.

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

Steně jako v R, pokud chceš zkombinovat proměnné různých typů do jedné proměnné, použij seznam. Ve verzi Rcpp se typ píše s velkým písmenem — jde o List.

Toto cvičení je součástí kurzu

Optimizing R Code with Rcpp

Zobrazit kurz

Pokyny k cvičení

  • Dokonči definici funkce create_vectors(), která vytvoří několik vektorů.
    • Vytvoř nepojmenovaný character vektor polygons obsahující hodnoty "triangle", "square" a "pentagon" v tomto pořadí.
    • Vytvoř pojmenovaný integer vektor mersenne_primes obsahující hodnoty 3, 7 a 31 v tomto pořadí. Názvy prvků mají být "first", "second" a "third".
    • Vytvoř pojmenovaný seznam both obsahující polygons a mersenne_primes v tomto pořadí. Názvy prvků mají být také polygons a mersenne_primes.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

#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()
*/
Upravit a spustit kód