[Rcpp-devel] Rcpp equivalent of sample()?

Dirk Eddelbuettel edd at debian.org
Sun May 15 02:29:54 CEST 2011


On 14 May 2011 at 17:13, Chris DuBois wrote:
| Thanks Dirk.  Quick newbie followup question: Can we put functions within the
| inline C++ code?  The following doesn't compile, for example:
| src <- '
| int addition (int a, int b)
| {
|   int r;
|   r=a+b;
|   return (r);
| }
| NumericVector xx(x);
| return(xx);
| '
| testfun = cxxfunction(signature(x="numeric"),body=src,plugin="Rcpp")

Use the 'verbose=TRUE' to cxxfunction() and it will become clear
why -- a function is written around the 'body=...' argument,
hence no chance that that part may contain another C++ function.

The remedy is simple: use the "include=..." argument as in 

   inc <- '
   int addition (int a, int b) {
     int r = a + b;
     return (r);
   }
   '
   
   src = '
   NumericVector xx(x);
   return(xx);
   '

   testfun = cxxfunction(signature(x="numeric"), body=src, include=inc, plugin="Rcpp") 


That trick is used a couple of time in the documentation and examples.


| On a related note, would you mind showing a quick working example using
| std::accumulate?  The one below from the quick reference doesn't compile for
| me.


Try Google for something like that, eg a query that is restricted to my site as in

    site:dirk.eddelbuettel.com  "std::accumulate"

show five immediate hits.  You can similarly constrict the search
to the rcpp-devel list.

Can you send a small example for inline that shows how/where it quickref
example fails for you?

Dirk

-- 
Gauss once played himself in a zero-sum game and won $50.
                      -- #11 at http://www.gaussfacts.com


More information about the Rcpp-devel mailing list