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
Ö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ärdena3,7och31, i den ordningen. Namnen ska vara"first","second"och"third". - Skapa en namngiven lista,
both, som innehållerpolygonsochmersenne_primes, i den ordningen. Namnen ska också varapolygonsochmersenne_primes.
- Skapa en onamngivén teckenvektorvektor,
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()
*/