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