This question already has an answer here:
Call a function from c++ via environment Rcpp

(1个答案)


3年前关闭。




如何在C++代码中调用不属于任何R包的R函数?我可以通过一个非常实际的例子来说明我的意思。假设我写了一个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;
}

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

最佳答案

例。在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

关于c++ - Rcpp:从全局环境中调用R函数并在C++代码中使用它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47284213/

10-16 04:53