我正在考虑通过环境从c ++调用R函数,但是我得到了一个错误,这就是我做的事情
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector call(NumericVector x){
Environment env = Environment::global_env();
Function f = env["fivenum"];
NumericVector res = f(x);
return res;
}
输入call(x)
,这就是我得到的,
Error: cannot convert to function
我知道我可以用另一种方式做到这一点,
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector callFunction(NumericVector x, Function f) {
NumericVector res = f(x);
return res;
}
并输入
callFunction(x,fivenum)
但仍然想知道为什么第一种方法失败。
答案 0 :(得分:8)
fivenum
函数未在全局环境中定义,而是在stats
包环境中定义,因此您应该从中获取:
...
Environment stats("package:stats");
Function f = stats["fivenum"];
...