[Rcpp-devel] A question in slides from Rcpp workshop

Zhongyi Yuan yuanzygoso at gmail.com
Fri Aug 5 20:26:51 CEST 2011


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 <edd at debian.org> 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 <bates at stat.wisc.edu>
> wrote:
> |
> |     On Fri, Aug 5, 2011 at 5:27 AM, Zhongyi Yuan <yuanzygoso at gmail.com>
> 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
> |     > Rcpp-devel at lists.r-forge.r-project.org
> |     >
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
> |     >
> |     >
> |
> |
> |
> | ----------------------------------------------------------------------
> | _______________________________________________
> | Rcpp-devel mailing list
> | Rcpp-devel at lists.r-forge.r-project.org
> | 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20110805/46229eeb/attachment-0001.htm>


More information about the Rcpp-devel mailing list