[Rcpp-devel] How to modifying the elements of a list in the global environment?

Dirk Eddelbuettel edd at debian.org
Fri Oct 19 03:06:49 CEST 2012


Giovanni,

On 18 October 2012 at 17:46, Dirk Eddelbuettel wrote:
| | > code_f <- '
| | +     Rcpp::NumericMatrix cpp_x(x);
| | +     Rcpp::NumericMatrix cpp_mu(mu); 
| | +     int K = cpp_mu.ncol();
| | +     int M = cpp_mu.nrow();
| | +     int N = cpp_x.nrow();
| | +     Environment glob = Environment::global_env(); 
| | +     List cpp_work(glob.get("workspace"));
| | + 
| | +     for (int k=0; k < K; k++) {
| | +         cpp_work[k] = clone(cpp_x);
| | +         for (int i=0; i < M; i++) 
| | +             cpp_work(_, i) = cpp_work(_, i) - cpp_mu(i, k);

That can't work.  You have the types confused.

You could just pass the list object down, and then pick from it.  Working
examples for that are in the list archives, in the RcppExamples package, and
in other places on the net.

Or, as I suggested, just allocate the scrap space inside the C++ routine.

Hth,  Dirk

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com  


More information about the Rcpp-devel mailing list