>> ### For the Rcpp part, set aside working space in the global environment >> workspace <- lapply(1:K, function(k) matrix(0.0, N, M)) > > Then I try to access the matrices in the 'workspace' list and modify them, > but so far I have had no success. The first attemp, bolow, does not compile... > >> code_f <- ' > + Rcpp::NumericMatrix cpp_x(x);
If you're familiar with R and new to C++, understanding how C++ clone() works will help. For example, to use a single matrix as a "working matrix" (if you write over it each iteration), define the working matrix (workmat) in R. You can pass that object to the C++ function in two different ways: Rcpp::NumericMatrix workmat(workmat_); // modifies existing R structure in-place, no extra copy made Rcpp::NumericMatrix workmat( clone(workmat_) ); // allocate new memory to make a "deep copy" Assuming N & M are constant, then you can make a single matrix in R and modify it in-place without any cost of extra copying. If you *want* and extra copy, you use clone(). R *always* makes a new copy -- this is one of the "big divides" between R and C++, pass-by-reference versus pass-by-value (clone). For examples, see http://cran.r-project.org/web/packages/Rcpp/vignettes/Rcpp-quickref.pdf. -Christian -- A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal – Panama! _______________________________________________ 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