[Rcpp-devel] Sample function(s) for inclusion in RcppArmadillo
Dirk Eddelbuettel
edd at debian.org
Tue Dec 25 16:38:54 CET 2012
Perfect timing. Meant to email you yesterday regarding sample(), but that
fell off the hectic wagon. We should get back to this.
On 25 December 2012 at 01:39, Christian Gunning wrote:
| I'm working on writing runit tests for the previously-discussed
| sample, and I just hit my competence threshold dealing with
| inst/include.
| As discussed, the (overloaded) sample() functions are to be called
| only from user C++ code and are thus not exposed to R.
| This means that the function definitions should go in inst/include, correct?
Yes.
| I don't really know what I'm doing here. If someone could recommend a
| good reference for namespace control, headers, and R-package specific
| issues I'd be grateful. Details follow:
|
| I'm trying to get the following test function to use RcppArmadillo's
| definition of sample, and the compiler never finds it:
| require(Rcpp)
| cppFunction( code='
| IntegerVector sample_int_noprob( IntegerVector x, int size,
| bool replace) {
| RNGScope scope;
| IntegerVector ret = RcppArmadillo::sample(x, size, replace);
| return ret;
| }',
| depends='RcppArmadillo'
| )
a) Is your #include file being loaded? Did you add a statement to your copy
of RcppArmadillo.h or some other header file? Else it is not included -- and
the compiler has no idea what you are talking about.
b) If a) is taken care of, is sample() defined inside 'namespace armadillo' ?
| I tried placing the definition of sample in
| RcppArmadillo/inst/include/sample.h.
| using namespace Rcpp;
| template <class T>
| T sample(const T &x, const int size, const bool replace,
| NumericVector prob_ = NumericVector(0) ) {
| // Templated sample -- should work on any Rcpp Vector
| ...
| }
That would be a no to b).
| I've tried to use RcppArmadilloWrap.h as an example, using:
| namespace Rcpp{
| namespace RcppArmadillo{
| ...
| }
| }
That would be two nested namespaces (which I don't we do for Armadillo) as in
Rcpp::RcppArmadillo::sample()
You don't really have a stanza as we haven't defined other utility functions
for RcppArmadillo yet.
If you have a simple clean diff we can maybe noodle over this this week.
Maybe you and should work on this off-list?
Dirk
| best,
| Christian
|
|
| On Thu, Nov 15, 2012 at 5:35 AM, Dirk Eddelbuettel <edd at debian.org> wrote:
| >
| > On 15 November 2012 at 04:00, Christian Gunning wrote:
| > | | Also, you may need to add RNGScope() if you use R's RNG.
| > | |
| > | |
| > | |
| > | | Yes, I should have mentioned that in my post. Calling RNGScope() is left
| > | to
| > | | the user, since multiple calls to sample() can conceivably happen inside
| > | a
| > | | single RNGScope().
| > |
| > | With that, maybe best to be included as another example in RcppArmadillo ?
| > |
| > |
| > | Why? The proposed behavior is the same as sugar's rnorm, etc.: a utility
| > | function that uses R's RNG -- it's the
| > | user's responsibility to properly scope the RNG.
| >
| > Fair point.
| >
| > | When time permits, I'll add Romain's comments on sugarizing sample (which I
| > | *think* I understand), along with some testing code.
| >
| > Excellent plan.
| >
| > Dirk
| >
| > --
| > Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
| >
| >
|
|
|
| --
| A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal – Panama!
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel at lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
--
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
More information about the Rcpp-devel
mailing list