Yes - I agree that iterating is not the best way to go, but I am using this for an agent based simulation where iteration is really my only option. I won't be generating more than a few thousand records, so the time shouldn't be much of a factor. Of course, in R it is painfully slow - so that is why I am going the Rcpp route.
-----Original Message----- From: dmba...@gmail.com [mailto:dmba...@gmail.com] On Behalf Of Douglas Bates Sent: Tuesday, September 25, 2012 3:13 PM To: Rodney Sparapani Cc: Goldfeld, Keith; rcpp-devel@lists.r-forge.r-project.org Subject: Re: [Rcpp-devel] NumericVector Double mismatch when indexing an array On Tue, Sep 25, 2012 at 1:53 PM, Rodney Sparapani <rspar...@mcw.edu> wrote: > On 09/25/2012 01:37 PM, Goldfeld, Keith wrote: > >>> code<- 'Rcpp::RNGScope scope; >> >> >> + Rcpp::NumericVector rn(5); >> >> + for (int i=0; i< 5; i++) { >> >> + rn(i) = rnorm(1,0,1); >> >> + } >> >> + return Rcpp::wrap(rn); >> >> + ' >> >>> >> >>> fun<- cxxfunction(body=code, plugin="Rcpp") > > > You just need an explicit type conversion like so: > > funk2 <- cxxfunction(body='RNGScope scope; > NumericVector rn(5); > for (int i=0; i < 5; i++) rn[i] = as<double>(rnorm(1,0,1)); > return wrap(rn);', > includes="using namespace Rcpp;\n", plugin="Rcpp") > > funk2() That works but you wouldn't want to use it as a general model because you are creating vectors of length 1 then dereferencing the first element in each of these vectors and copying it to another vector. Obviously with n=5 the difference in execution time will be minimal but with n=5 million it won't be. Using the Rcpp sugar function rnorm will be the easiest approach unless, like me, you get a little queasy when using Rcpp sugar functions just because it is so hard to pick them apart and see what is actually happening. I would probably end up going back to the R API and calling norm_rand or Rf_rnorm. That latter returns a double from two double arguments, mu and sigma. _______________________________________________ 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