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
