[Rcpp-devel] Can I fill a matrix row by row with std<vector> (or similar)

Dirk Eddelbuettel edd at debian.org
Fri Mar 1 19:05:53 CET 2013


On 1 March 2013 at 17:15, stat quant wrote:
| Hello list,
| I have several std::vector<double> in a STL container and would like to fill a
| Rcpp::NumericMatrix row by row with them, is there an easy way to do it, or

One (often mentioned) issue is that storage really is column-wise so you
could consider stacking by column, and the transpose at the end.

| should I iterate over all elements as in usual C++?
| I saw the `_` in this post on SO but I think it has a different purpose.
| cCode <- '
|     double v_value[] = {1.1,2.4};
|     vector<double> v(v_value, v_value + sizeof(v_value)/sizeof(double));
|     NumericMatrix m(3,2);
|     
|     //Here is what I was hoping for
|     //for(int i=0; i<3; i++){
|     // m(i,_) = v;
|     //}

I believe that works or at least used to worked / is supposed to work.

That said, I also frequently take Armadillo for tasks such as this, it has
all the operations, and if I ever wanted the C++ routine in C++ standalone
I'd simply switch to Armadillo (rather than RcppArmadillo) headers.  Similar
strategies should work for RcppEigen if you prefer Eigen.

Dirk

        
|     return m;
| ';
| R)
| fillMat <- cxxfunction(signature(), includes='using namespace std;', plugin=
| "Rcpp", body=cCode) 
|  
| Regards
|  
| 
| ----------------------------------------------------------------------
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel at lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com  


More information about the Rcpp-devel mailing list