開始使用免費開始

用給定的值建立向量

與其先宣告一個向量、再逐一填入元素,你也可以用一行程式碼透過 ::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,包含且依序為 3731。其名稱依序為 "first""second""third"
    • 建立具名的 list both,依序包含 polygonsmersenne_primes。其名稱也分別為 polygonsmersenne_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()
*/
編輯並執行程式碼