Hello,

I have just noticed that my small Rcpp function changes the original matrix on 
the R side -- why and how to pass by copy?

Thanks
Sören

<source c++>
#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
NumericMatrix test_min( NumericMatrix M ) {
        int n = M.nrow();
        for ( int i = 0; i < n; ++i ) {
                for ( int j = 0; j < n; ++j ) {
                        M(i, j) = M(i, j) * 2.0;
                }
        }
        return M;
}
</source>

<source R>
library( 'Rcpp' )
mat <- matrix(runif(4), nrow=2)
sourceCpp('min.cpp')
test_min(mat) # mat * 2
test_min(mat) # mat * 2 * 2
test_min(mat) #...
mat
</source>

_______________________________________________
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

Reply via email to