Le 14/11/12 14:05, Christian Gunning a écrit :
Dear all,

The attached file is for inclusion in RcppArmadillo/src.  It's a
templated implementation of R's sample that relies on a few Armadillo
functions.  It should produce results identical to R, except when R uses
Walker's alias method (with replacement, more than 200 nonzero
probabilities given).

This is intended to be used solely in C++ code, and is not exported.

best,
Christian
University of New Mexico

--
A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal – Panama!

Interesting. With some more work, we could even make this sugary. i.e. have this signature:

template <int RTYPE, bool NA, typename T>
Rcpp::Vector<RTYPE> sample(const Rcpp::VectorBase<RTYPE,NA,T> &x, const int size, const bool replace, NumericVector prob_ = NumericVector(0) ) {

        typedef Rcpp::Vector<RTYPE> TARGET ;
        // Templated sample -- should work on any Rcpp Vector
    int ii, jj;
    int nOrig = x.size();
    int probsize = prob_.size();
    // Create return object
    TARGET ret(size);
if ( size > nOrig && !replace) throw std::range_error( "Tried to sample more elements than in x without replacement" ) ;
        
    ...

}

So that we could sample sugar expressions :-)

Romain

--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30

R Graph Gallery: http://gallery.r-enthusiasts.com
`- http://bit.ly/SweN1Z : SuperStorm Sandy

blog:            http://romainfrancois.blog.free.fr
|- http://bit.ly/RE6sYH : OOP with Rcpp modules
`- http://bit.ly/Thw7IK : Rcpp modules more flexible

_______________________________________________
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

Reply via email to