Thanks for answering.
By
"It does change the default rownames and colnames of the NumericMatrix"
understand
"It does not change the default rownames and colnames of the returned
NumericMatrix."
Actually, I don't want to create a copy of the matrix.
I want to create a new matrix which as the same size as the original
one, the same rownames and the same colnames but not the same content.
I may clone the original matrix and reset his content after. Is clone as
fast as creating a new matrix?
Le 11/08/2015 13:19, Dirk Eddelbuettel a écrit :
On 11 August 2015 at 12:30, Florian Plaza Oñate wrote:
| Hi everyone,
|
| I am trying to copy the rownames and the colnames from a NumericMatrix
| to another NumericMatrix by using Rcpp
|
| Here is my code:
|
| Rcpp::NumericMatrix copy(const Rcpp::NumericMatrix& m)
| {
| Rcpp::NumericMatrix m2(num_genes, num_samples);
| Rcpp::rownames(m2) = Rcpp::rownames(m);
| Rcpp::colnames(m2) = Rcpp::colnames(m);
If you want a full copy, try
Rcpp::NumericMatrix m2 = Rcpp::clone(m);
as in
R> cppFunction("NumericMatrix foo(NumericMatrix m) { return Rcpp::clone(m); }");
R> m <- matrix(1:4,2,2,TRUE,list(c("a","b"), c("c", "d")))
R> foo(m)
c d
a 1 2
b 3 4
R>
| return m2;
| }
|
| It does change the default rownames and colnames of the NumericMatrix.
| Do you know how to do it?
Now I am confused. You do want to change them or not?
If you do _not_ use clone(), then m2 and m share the same underlying
pointer. This has been explained before: we use proxy objects which are more
lightweight. Distinct copies require clone().
Dirk
_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel