Я пытаюсь использовать R внутри C++ через RInside. У меня возникли проблемы с передачей армадильо-матриц в R и возвратом результата. Ниже я могу вернуть результаты из функции библиотеки R, однако я получаю неправильный результат. Я использую функцию асимметрии из пакета моментов в качестве примера, который работает так же, как и в R. Я проверил примеры из RInside, и я все еще не уверен, как использовать RcppArmadillo. Как правильно передать матрицу броненосца в C++ на R?Понимание прохождений армадильо-матриц к функциям R через RInside
#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);
}
Три ура для первого официального 'sourceCpp()' -using ответа :) –
Не удалось устоять –
Пролито в небольшом разъяснении. –