Hello Dirk, That was everything I want to know in this example. Thanks for helping me out, for your advice, and for such an amazing package.
Best, Zhongyi On Fri, Aug 5, 2011 at 11:21 AM, Dirk Eddelbuettel <[email protected]> wrote: > > Zhongyi, > > On 5 August 2011 at 04:05, Zhongyi Yuan wrote: > | Hi Douglas, > | > | Thank you for the reply. That clarifies quite a bit. > | But still, it does not explain the different behavior of those examples, > does > | it? One moment ago, I was thinking that the L suffix might have made it > | constant and hence can't be modified. Looks like I am wrong. (And > fun(1:3) > | gives the same result too.) > > Don't take this the wrong way but you man know too little R to get to what > this is about. But please consider this difference: > > R> typeof(1L) > [1] "integer" > R> typeof(1) > [1] "double" > R> > > In particular, both '1' and '1.0' get you a double. > > We added the example to show that when you use 1L:3L (eg an integer vector) > and assign to a Rcpp::NumericVector you _do get a separate copy_ due to C++ > casting semantics. The proper lightweight call is seq(1.0, 3.0, by=1.0) > which then exhibits the shallow copy vs deep copy issue the rest of the > example is about. > > This is somewhat advanced corner-case stuff so maybe you should not fret > too > too much about it now but come back to it later. > > Dirk > > | Zhongyi > | > | On Fri, Aug 5, 2011 at 3:49 AM, Douglas Bates <[email protected]> > wrote: > | > | On Fri, Aug 5, 2011 at 5:27 AM, Zhongyi Yuan <[email protected]> > wrote: > | > Dear useR's, > | > > | > After I found Rcpp a few days ago, I've been very excited > collecting > | > documents for learning. But still I find myself understand little. > | > Here's a question I want you to help me with. > | > > | > In page 17 of Dirk and Romain's slides from part2 of the Apr 28 > Rcpp > | > workshop (here's a link: > | > > http://dirk.eddelbuettel.com/papers/rcpp_workshop_part_2_details.pdf), I > | > can't figure out why the two examples behave differently. > | > And also, why are people using 1L:3L? What not just 1:3? > | > | It happens that they are the same but only because 1:3 generates an > | integer sequence by default. Most of the time 1 gives a double > | precision floating point number whereas 1L is an integer. Those with > | long-time experience in writing R code tend to use the L when they > | know that an integer is wanted, just to bypass the conversion step. > | > | > Maybe I am asking silly question? But please do help me. I couldn't > find > | an > | > answer on google. > | > Thank you. > | > > | > Best, > | > Zhongyi > | > > | > > | > _______________________________________________ > | > Rcpp-devel mailing list > | > [email protected] > | > > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > | > > | > > | > | > | > | ---------------------------------------------------------------------- > | _______________________________________________ > | Rcpp-devel mailing list > | [email protected] > | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > > -- > Gauss once played himself in a zero-sum game and won $50. > -- #11 at http://www.gaussfacts.com >
_______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
