Rcpp:从全局环境调用R函数并在C ++代码中使用它

时间:2017-11-14 11:07:49

标签: c++ r rcpp

如何将不属于任何R包的R函数调用到C ++代码中?我可以通过一个非常简单的例子告诉你我的意思。假设我写了一个R文件

myRfunction <- function(x){
 return(x+2)
}

我希望在通用的c ++代码中使用它。所以,我写了像

这样的东西
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
using namespace Rcpp;
using namespace arma;
using namespace std;

// [[Rcpp::export]]

arma::vec myCppfunction(arma::vec y){
 arma::sec results = myRfunction(y);  /* Or whatever I have to do to call it! */
 return results;
}

有人可以告诉我该怎么做吗?一般程序是什么?谢谢大家。

2 个答案:

答案 0 :(得分:2)

实施例。在R:

> timesTwoR <- function(x) 2*x

cpp文件:

#include <Rcpp.h>
using namespace Rcpp;

Function timesTwoFromR = Environment::global_env()["timesTwoR"];

// [[Rcpp::export]]
NumericVector timesTwo(NumericVector x) {
  return timesTwoFromR(x);
}

然后,在R:

> timesTwo(42)
[1] 84

答案 1 :(得分:0)

或者,您可以将R函数作为参数传递给C ++函数,如下所示:

person