I have a list of matrices in R which I want to turn into a bunch of Eigen matrices using RcppEigen. I found a way to do this, but it seems unnecessarily tortured. Here's what I have:
// [[Rcpp::export]] void listMat(Rcpp::List mat_list) { int n_mats = mat_list.size(); std::vector<Eigen::MatrixXf> vec_of_mats(n_mats); for (int i=0; i < n_mats; i++) { Rcpp::NumericMatrix tmpcv = mat_list[i]; double *pcv = &tmpcv(0,0); Eigen::Map<Eigen::MatrixXd> tmpmapd(pcv, tmpcv.nrow(), tmpcv.ncol()); vec_of_mats[i] = Eigen::MatrixXf(tmpmapd.cast<float>()); } std::cout << vec_of_mats[0] << std::endl; // Sanity check. return; } Note that I'm putting each matrix in my R list into a std::vector where each element is a float matrix (ie MatrixXf). This does assume that Rcpp::NumericMatrix stores the matrix data contiguously and in column-major order, which is true, but will it always necessarily be so? (I get a little bit nervous about reaching into a class like this and just pulling out an address). Is there a more direct way of doing this? Thanks, Mark _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel