开始使用免费开始使用

用给定值创建向量

与其先定义一个向量再逐个填充值,您可以使用 ::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 中相同,如果您想把不同类型的变量组合到一起,需要使用列表。在 Rcpp 中,该类型首字母大写,为 List

本练习是课程的一部分

用 Rcpp 优化 R 代码

查看课程

练习说明

  • 完成函数 create_vectors() 的定义,用于创建一些向量。
    • 创建一个未命名的字符向量 polygons,依次包含 "triangle""square""pentagon"
    • 创建一个具名的整数向量 mersenne_primes,依次包含 3731。名称应为 "first""second""third"
    • 创建一个具名的列表 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()
*/
编辑并运行代码