Kom igångKom igång gratis

Skapa en vektor med givna värden

I stället för att först definiera en vektor och sedan fylla i dess element efteråt går det att skapa en vektor och ange dess värden på en enda kodrad med hjälp av ::create(). Det här är en statisk medlemsfunktion – det vill säga en metod som tillhör själva vektortypen, inte en enskild vektorvariabel. Du kan ange upp till 20 element med create. (För längre vektorer behöver du använda flera kodrader.)

Följande kod skapar en numerisk vektor, important_numbers, som innehåller pi, e och oändligheten.

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

::create kan även användas för att skapa namngivna vektorer. Syntaxen för att namnge element är _["name"] = value. Här är samma kod igen, den här gången med namngivna element.

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

Precis som i R används en lista när du vill kombinera variabler av olika typer i en gemensam variabel. I Rcpp-versionen skrivs typen med stor bokstav – det är en List.

Den här övningen är en del av kursen

Optimera R-kod med Rcpp

Visa kurs

Övningsinstruktioner

  • Slutför definitionen av funktionen create_vectors(), som skapar några vektorer.
    • Skapa en onamngivén teckenvektorvektor, polygons, som innehåller värdena "triangle", "square" och "pentagon", i den ordningen.
    • Skapa en namngiven heltalsvektorn, mersenne_primes, som innehåller värdena 3, 7 och 31, i den ordningen. Namnen ska vara "first", "second" och "third".
    • Skapa en namngiven lista, both, som innehåller polygons och mersenne_primes, i den ordningen. Namnen ska också vara polygons och mersenne_primes.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

#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()
*/
Redigera och kör kod