开始使用免费开始使用

double 向量求和

由于在 C++ 中循环通常比在 R 中快得多,编写循环是一项重要技能。让我们从一个对 NumericVector 中的值求和的函数开始。这将复习您在第 2 章第 10 个练习以及本章上一个练习中学到的技能。

本练习是课程的一部分

用 Rcpp 优化 R 代码

查看课程

练习说明

  • 完成函数 sum_cpp 的定义,对 NumericVector 的各元素进行循环并返回其和。
    • n 设为 xsize()
    • result 初始化为 0。
    • 指定 for 循环的参数。将 i 初始化为 0,将迭代条件设为 i 小于 n,并在每一步将 i 加 1。
    • 在每次迭代中,将 x 的第 i 个元素加到 result 上。

交互式实操练习

通过完成这段示例代码来试试这个练习。

#include 
using namespace Rcpp;

// [[Rcpp::export]]
double sum_cpp(NumericVector x) {
  // The size of x
  int n = ___;
  // Initialize the result
  double result = ___;
  // Complete the loop specification
  for(int i = 0; ___; ___) {
    // Add the next value
    result = result + ___;
  }
  return result;
}

/*** R
set.seed(42)
x <- rnorm(1e6)
sum_cpp(x)
# Does the function give the same answer as R's sum() function?
all.equal(sum_cpp(x), sum(x))
*/
编辑并运行代码