用給定的值建立向量
與其先宣告一個向量、再逐一填入元素,你也可以用一行程式碼透過 ::create() 同時建立向量並指定其值。這是一個「靜態成員函式」,也就是它是向量型別本身的方法,而不是向量變數的方法。使用 create 最多可以指定 20 個元素。(更長的向量就需要多行程式碼。)
下面的程式碼會建立一個數值向量 important_numbers,其中包含 pi、e,以及無窮大。
NumericVector numbers = NumericVector::create(PI, exp(1), INFINITY);
::create 也可以用來建立具名向量。為元素命名的語法是 _["name"] = value。以下是相同的程式碼,但這次替元素加上名稱。
NumericVector numbers = NumericVector::create(_["pi"] = PI, _["e"] = exp(1), _["inf"] = INFINITY);
就像在 R 中一樣,如果你想把不同型別的變數組合成另一個變數,就會使用 list。在 Rcpp 中,型別名稱要大寫,寫作 List。
本練習屬於課程
用 Rcpp 最佳化 R 程式碼
練習說明
- 完成函式
create_vectors()的定義,讓它建立一些向量。- 建立未具名的字元向量
polygons,包含且依序為"triangle"、"square"、"pentagon"。 - 建立具名的整數向量
mersenne_primes,包含且依序為3、7、31。其名稱依序為"first"、"second"、"third"。 - 建立具名的 list
both,依序包含polygons與mersenne_primes。其名稱也分別為polygons與mersenne_primes。
- 建立未具名的字元向量
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
#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()
*/