On 14 December 2011 at 13:55, Stefano Calza wrote:
| Hi everybody
|
| this is probably a trivial question,but still something is not clear to me.
|
| Moving from SEXP => Rcpp => arma objects (say a matrix) I could do:
|
| Rcpp::NumericMatrix A(clone(X)); // I want deep copy
| arma::mat B = as< mat >(A); // again a copy
|
| ...
| some code here that modifies B
| ...
|
| Now, what shall I do if I want to transform B into a Rcpp::NumericMatrix? Why?
| For example I might want to add attributes to it.
|
| wrap() is no good, so what else?
Well as wrap() returns a SEXP, if you really wanted to, you could then call
as<>() on that SEXP to create a new Rcpp object. That is perfectly generic.
As for a more direct arma::mat to Rcpp::NumericMatrix: I would study all
available constructors to Rcpp::NumericMatrix. There are forms where you
indicate the beginning of the underlying memory as well as the dimensions.
From Arma, you can get all that. But do check that you don't fall into a
row-major / column-major trap, and if so, do another transpose.
Dirk
--
"Outside of a dog, a book is a man's best friend. Inside of a dog, it is too
dark to read." -- Groucho Marx