Rcpp 快速参考指南显示了如何从 Rcpp 代码中的包调用 R 函数。它以 stats 包为例。但是如果我做了一个包,我想用 Rcpp 从这个包中调用一个 R 函数,也在这个包中,我该怎么办?我没有尝试,但我想按照 stats 的例子,简单地用 mypackage 替换 stats 是行不通的,因为 mypackage 在编译期间还不存在。我希望我的英语措辞清楚...
我通过调用
tstpkg
使用pkgKitten 包设置了一个快速包
kitten.r
。
我添加了这个 R 函数:
theAnswer <- function() { 42L }
实际上我们可以从同一个包中调用它只需不在任何命名空间等前面添加前缀
#include <Rcpp/Light>
// [[Rcpp::export]]
bool checkAnswer() {
Rcpp::Function f("theAnswer");
int val = Rcpp::as<int>(f());
return val == 42;
}
命令行上的快速临时调用确认:
$ Rscript -e 'library(tstpkg); theAnswer(); checkAnswer()'
[1] 42
[1] TRUE
$