Buat vektor dengan nilai yang diberikan
Alih-alih mendefinisikan sebuah vektor lalu mengisinya setelahnya, Anda dapat membuat vektor dan menentukan nilainya dalam satu baris kode menggunakan ::create(). Ini adalah sebuah static member function, yaitu metode milik tipe vektor itu sendiri, bukan metode milik variabel vektor. Anda dapat menentukan hingga 20 elemen menggunakan create. (Untuk vektor yang lebih panjang, Anda harus menggunakan beberapa baris kode.)
Kode berikut membuat vektor numerik, important_numbers, yang berisi pi, e, dan infinity.
NumericVector numbers = NumericVector::create(PI, exp(1), INFINITY);
::create juga dapat digunakan untuk membuat vektor bernama. Sintaks untuk memberi nama elemen adalah _["name"] = value. Berikut kode yang sama, kali ini dengan penamaan elemen.
NumericVector numbers = NumericVector::create(_["pi"] = PI, _["e"] = exp(1), _["inf"] = INFINITY);
Sama seperti di R, jika Anda ingin menggabungkan variabel dengan tipe berbeda ke dalam variabel lain, gunakan list. Dalam Rcpp, tipenya diawali huruf kapital; yaitu List.
Latihan ini adalah bagian dari kursus
Mengoptimalkan Kode R dengan Rcpp
Petunjuk latihan
- Lengkapi definisi fungsi
create_vectors()yang membuat beberapa vektor.- Buat vektor karakter tanpa nama,
polygons, yang berisi nilai"triangle","square", dan"pentagon", dalam urutan tersebut. - Buat vektor integer bernama,
mersenne_primes, yang berisi nilai3,7, dan31, dalam urutan tersebut. Namanya harus"first","second", dan"third". - Buat list bernama,
both, yang berisipolygonsdanmersenne_primes, dalam urutan tersebut. Namanya juga haruspolygonsdanmersenne_primes.
- Buat vektor karakter tanpa nama,
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
#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()
*/