我刚开始学习R,因此陷入了琐碎的问题.我试图找出如何在R中输出值.在C++中我们只使用返回变量,但这似乎不是R的情况.假设我有一个带有4个输入参数的函数,将这些参数传递给c ++函数执行所需的计算,现在如果我想在R中加载这个myfun并从c ++函数获取输出,我需要做什么?以下是我尝试使用的模板.
extern "C" {
SEXP myfun(SEXP S, SEXP A, SEXP B, SEXP C) { //will call this function from R.
SEXP rate, dir, list, list_names; //declare variables
PROTECT( rate = allocMatrix(REALSXP, 10, 2) ); //allocate 10x2 matrix of double type?
PROTECT( dir = allocVector(INTSXP, 10) ); //allocated vector(10) of int type?
double* p_rate = REAL(rate); //why do I need pointers?
int* p_dir = INTEGER(dir);
Run Code Online (Sandbox Code Playgroud)
//这里我调用一个C++函数来计算vector<vector<double> > someVal和vector<int> someVal2.
现在我想将这些值传递给rate和dir.
for(int i =0; i < …Run Code Online (Sandbox Code Playgroud) 我有一个在R中定义的矩阵.我需要将这个矩阵传递给c ++函数并在C++中进行操作.示例:在R中,定义矩阵,
A <- matrix(c(9,3,1,6),2,2,byrow=T)
PROTECT( A = AS_NUMERIC(A) );
double* p_A = NUMERIC_POINTER(A);
Run Code Online (Sandbox Code Playgroud)
我需要将这个矩阵传递给C++函数,其中类型的变量'data' vector<vector<double>>将用矩阵A初始化.
我似乎无法弄清楚如何做到这一点.我想的是更复杂的方式然后我应该是,我打赌有一个简单的方法来做到这一点.