开始使用免费开始使用

已导出与未导出函数

带有特殊注释 [[Rcpp::export]] 的函数会被导出到 R 控制台可用。不过,通常您不会把每个函数都导出给 R。相反,一些函数可以只在 C++ 内部使用。它们往往是更底层的计算函数或工具函数。

回顾一下计算二维空间中某点到原点距离的函数:

double dist( double x, double y) {
  return sqrt( x*x + y*y ) ;
}

在这里,您将更新代码,使已导出的 dist 函数调用一个未导出的 square 函数,该函数仅对一个 double 求平方。

本练习是课程的一部分

用 Rcpp 优化 R 代码

查看课程

练习说明

  • 完成 square() 的定义,使其接收并返回一个 double,…
  • 返回值等于 x 乘以 x
  • 更新 dist() 的定义以使用 square()。也就是说,返回 x 的平方与 y 的平方之和的平方根。

交互式实操练习

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

#include 
using namespace Rcpp; 

// Make square() accept and return a double
___ square(___ x) {
  // Return x times x
  return ___ ;
}

// [[Rcpp::export]]
double dist(double x, double y) {
  // Change this to use square()
  return sqrt(___ + ___);
}
编辑并运行代码