我正在尝试通过 RInside 在 C++ 中使用 R。我无法将犰狳矩阵传递给 R 并返回结果。下面我能够从 R 库函数返回结果,但是我得到了错误的结果。我正在使用时刻包中的偏度函数作为示例,它在 R 中应该可以正常工作。我检查了 RInside 中的示例,但我仍然不确定如何使用 RcppArmadillo。如何正确地将 C++ 中的犰狳矩阵传递给 R?
#include <RInside.h>
#include <RcppArmadillo.h>
using namespace std;
using namespace arma;
int main(int argc, char *argv[]) {
RInside R(argc, argv);
string R_libs = "suppressMessages(library(moments));";
R.parseEvalQ(R_libs);
mat A = randu<mat>(5,5);
R["A"] = A;
string R_skewness = "B <- skewness(A);";
//this fails
mat B = Rcpp::as<mat>(R.parseEval(R_skewness)); //terminate called after throwing an instance of 'Rcpp::not_a_matrix'
//this works but wrong
mat B = Rcpp::as<vec>(R.parseEval(R_skewness)); // returns only 1 number, should be 5 ( 1 for each columnn), same result if i change mat B to vec B
exit(0);
}