已导出与未导出函数
带有特殊注释 [[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(___ + ___);
}