Le 27/04/10 23:49, Davor Cubranic a écrit : > > In my code, I have an Armadillo column vector v (i.e., an 'arma::vec') that I > return as a member of a list: > > arma::vec v(...); > List result = List::create(_["v"] = v);
From armadillo's documentation: http://arma.sourceforge.net/docs.html#Col Col<type> colvec vec Classes for column vectors (matrices with one column). So arma::vec is a matrix > In R, result$v becomes a matrix, so I need to call 'as.vector(v)' to turn it > into a vector. Even explicitly returning a NumericVector doesn't help, as in: > > arma::vec v(...); > List result = List::create(_["v"] = NumericVector(wrap(v))); > > Is this by design, a bug, or am I misusing the API? > > Davor NumericVector does not enforce this. You can remove the dim attribute in c++ if you like. NumericVector rvec = wrap(v) ; rvec.attr( "dim" ) = R_NilValue ; Or you can use the range wrap, like this: Rcpp::wrap( vec.memptr() , vec.memptr() + vec.n_elem ) which is what wrap( Col ) does, i.e it eventually calls this : template <typename T> SEXP arma_wrap( const T& object, const ::Rcpp::Dimension& dim){ ::Rcpp::RObject x = ::Rcpp::wrap( object.memptr() , object.memptr() + object.n_elem ) ; x.attr( "dim" ) = dim ; return x; } Romain -- Romain Francois Professional R Enthusiast +33(0) 6 28 91 30 30 http://romainfrancois.blog.free.fr |- http://bit.ly/9aKDM9 : embed images in Rd documents |- http://tr.im/OIXN : raster images and RImageJ |- http://tr.im/OcQe : Rcpp 0.7.7 _______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
