RInsideを介してC++内でRを使用しようとしています。アルマジロ行列をRに渡して、結果を返すのに問題があります。以下では、Rライブラリ関数から結果を返すことができますが、間違った結果が得られます。Rで正常に機能する例として、momentsパッケージの歪度関数を使用しています。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);
}