LoslegenKostenlos loslegen

Vektor mit vorgegebenen Werten erstellen

Anstatt einen Vektor zu definieren und seine Elemente anschließend zu füllen, kannst du einen Vektor erstellen und seine Werte in einer einzigen Codezeile mit ::create() angeben. Das ist eine statische Memberfunktion, also eine Methode des Vektortyps selbst und nicht einer Vektorvariablen. Mit create kannst du bis zu 20 Elemente angeben. (Für längere Vektoren musst du mehrere Codezeilen verwenden.)

Der folgende Code erstellt einen numerischen Vektor important_numbers mit pi, e und Unendlichkeit.

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

::create kann auch verwendet werden, um benannte Vektoren zu erzeugen. Die Syntax zum Benennen von Elementen lautet _["name"] = value. Hier ist derselbe Code noch einmal, diesmal mit Namen für die Elemente.

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

Genau wie in R verwendest du eine Liste, wenn du Variablen unterschiedlichen Typs zu einer anderen Variable kombinieren willst. In der Rcpp-Version ist der Typ großgeschrieben: Es ist eine List.

Diese Übung ist Teil des Kurses

R-Code mit Rcpp optimieren

Kurs anzeigen

Anleitung zur Übung

  • Vervollständige die Definition einer Funktion create_vectors(), die einige Vektoren erstellt.
    • Erzeuge einen unbenannten Zeichenkettenvektor polygons mit den Werten "triangle", "square" und "pentagon" in dieser Reihenfolge.
    • Erzeuge einen benannten Integer-Vektor mersenne_primes mit den Werten 3, 7 und 31 in dieser Reihenfolge. Die Namen sollen "first", "second" und "third" sein.
    • Erzeuge eine benannte Liste both, die polygons und mersenne_primes in dieser Reihenfolge enthält. Die Namen sollen ebenfalls polygons und mersenne_primes sein.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

#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()
*/
Code bearbeiten und ausführen