Belirli değerlerle vektör oluştur
Bir vektörü önce tanımlayıp sonra elemanlarını doldurmak yerine, ::create() kullanarak tek satırda vektör oluşturup değerlerini belirlemek mümkün. Bu bir "statik üye fonksiyonudur"; yani bir vektör değişkeninin değil, doğrudan vektör tipinin metodudur. create ile en fazla 20 eleman belirtebilirsin. (Daha uzun vektörler için birden çok satır kod yazman gerekir.)
Aşağıdaki kod, pi, e ve sonsuzluğu içeren important_numbers adlı sayısal bir vektör oluşturur.
NumericVector numbers = NumericVector::create(PI, exp(1), INFINITY);
::create adlı fonksiyon, isimlendirilmiş vektörler oluşturmak için de kullanılabilir. Elemanları adlandırmanın sözdizimi _["name"] = value şeklindedir. Aynı kodun, bu kez elemanları adlandırılmış hali aşağıda.
NumericVector numbers = NumericVector::create(_["pi"] = PI, _["e"] = exp(1), _["inf"] = INFINITY);
Tıpkı R'de olduğu gibi, farklı türde değişkenleri tek bir değişkende birleştirmek istersen, bir liste kullanırsın. Rcpp sürümünde tür adı büyük harfle yazılır; bu bir List'tir.
Bu egzersiz, kursun bir parçasıdır
Rcpp ile R Kodunu Optimize Etme
Egzersiz talimatları
- Bazı vektörler oluşturan
create_vectors()adlı bir fonksiyonun tanımını tamamla.- Sırayla
"triangle","square"ve"pentagon"değerlerini içeren isimsiz bir karakter vektörüpolygonsoluştur. - Sırayla
3,7ve31değerlerini içeren, isimlendirilmiş bir tamsayı vektörümersenne_primesoluştur. İsimler"first","second"ve"third"olmalı. polygonsvemersenne_primesdeğerlerini bu sırayla içeren, isimlendirilmiş bir listebotholuştur. İsimler depolygonsvemersenne_primesolmalı.
- Sırayla
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
#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()
*/