Hello David, The general answer to your question is, if the type of your matrix (integer or numeric) in R is different from the one you declare in Rcpp, Rcpp will make a copy and cast it to the appropriate type. For example, 1:12 is of type integer, and if you pass it as a NumericMatrix, Rcpp will implicitly copy the whole matrix, so no matter what modification you did, the original matrix will not change.
Best, Yixuan On Nov 26, 2014 1:33 AM, "David Shih" <david.s...@mail.utoronto.ca> wrote: > Hello, > > There was an earlier post on this subject, but based on my > experimentation, the behaviour of modifying input argument is different > depending on how the matrix was initialization and other factors... > > I wrote a Rcpp function to modify an input matrix. After calling this > function, the input matrix is modified under some circumstances and not > modified under others. The behaviour is the same on repeat runs and on both > Linux (3.16.3-1-ARCH) and Mac (OSX 10.9). > > The R script, C++ code, and the results are available on Bitbucket: > > https://bitbucket.org/dshih/rcpp_inplace > > I don't quite understand when the input matrix is modified in place by the > Rcpp function and when the input matrix is be copied on write in the Rcpp > function. > > When I stay within Rcpp/C++, a input argument can be modified in-place by > a function. (This feature was critical to my optimization.) > > After the code returns to R, I would expect either copy-on-write or > in-place modification but not both. > > What is the correct behaviour? > > > Thank you, > > David J. H. Shih > > The Hospital for Sick Children > Peter Gilgan Centre for Research and Learning > 686 Bay St > 17th floor, Room 17.9707 > Toronto, ON M5G 0A4 > Canada > Tel: (416) 813-7654 x309157 > _______________________________________________ > 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 >
_______________________________________________ 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