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
Pokyny k cvičení
- Dokonči definici funkce
create_vectors(), která vytvoří několik vektorů.- Vytvoř nepojmenovaný character vektor
polygonsobsahující hodnoty"triangle","square"a"pentagon"v tomto pořadí. - Vytvoř pojmenovaný integer vektor
mersenne_primesobsahující hodnoty3,7a31v tomto pořadí. Názvy prvků mají být"first","second"a"third". - Vytvoř pojmenovaný seznam
bothobsahujícípolygonsamersenne_primesv tomto pořadí. Názvy prvků mají být taképolygonsamersenne_primes.
- Vytvoř nepojmenovaný character vektor
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()
*/