2017-11-14 21 views
2

どのRパッケージにも属していないR関数をC++コードとして呼び出す方法は?私は非常に意味論的な例を通して私が何を意味するかを示すことができます。私が書いたRファイルがあるとします。Rcpp:地球環境からR関数を呼び出し、C++コードで使用する

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; 
} 

私はそれを行う方法を教えてもらえますか?一般的な手順は何ですか?皆さん、ありがとうございました。

+0

その他の重複: https://stackoverflow.com/questions/29463754/calling-r-function-from-rcpp と https://stackoverflow.com/questions/38016851/call-r-functions-in-rcpp – coatless

答えて

2

例。

> timesTwoR <- function(x) 2*x 

cppファイル:Rに

#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 
+0

うん、文書として。私は関数の代入をC++関数内に移したいと思います。 –

0

、あなたは、C++関数の引数として何かをR関数を渡すことができます

// [[Rcpp::export]] 
NumericVector call_r_fun(NumericVector x, Function f) { 
    return f(x) ; 
} 
関連する問題