[Rcpp-devel] Help with accessing and manipulating List objects

Tal Galili tal.galili at gmail.com
Sat Jul 20 22:42:36 CEST 2013


Thank you for all the responses Dirk.
I will go through them one at a time to see what I can accomplish on my own.
Further questions will follow in the next few weeks (I imagine).

Cheers,
Tal



----------------Contact
Details:-------------------------------------------------------
Contact me: Tal.Galili at gmail.com |
Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) |
www.r-statistics.com (English)
----------------------------------------------------------------------------------------------



On Sat, Jul 20, 2013 at 11:31 PM, Dirk Eddelbuettel <edd at debian.org> wrote:

>
> Hi Tal,
>
> On 20 July 2013 at 22:14, Tal Galili wrote:
> | Hello Dirk and others,
> |
> | Dirk -
> | Thank you for the quick reply!
> |
> | Some responses:
> |
> |
> | 1) I looked at the Rcpp gallery.
> | The best I found was:
> | http://gallery.rcpp.org/articles/setting-object-attributes/
> | (which already was available in Hadley's book)
>
> Sure. He too recycled some older posts. What goes around ...
>
> | And:
> | http://gallery.rcpp.org/articles/modifying-a-data-frame/
> | http://gallery.rcpp.org/articles/reversing-a-vector/
> |
> | And also now at unitTests/cpp/DataFrame
> | (interesting)
> |
> | But none have helped me with getting the attributes of an element inside
> a
> | List.
> | That is, say that we have x as a List, how do we go about fetching its
> attr?
> | I tried:
> | x[1].attr("type")
> | x.attr[1]("type")
> | But none seemed to have worked. Any suggestions there?
>
> Sometimes it is easier / better / necessary to do this in two steps.
>
> First some R data:
>
> R> foo <- list(bar=42, bing=21)
> R> attr(foo[[1]], "type") <- "xyz"
>
> Then a quick function in C++:
>
> R> cppFunction('CharacterVector tal(List x) { IntegerVector y = x[0];
> return y.attr("type"); }')
> R> tal(foo)
> [1] "xyz"
> R>
>
> So once I take the element out of the list and assign it to a "standalone"
> variable, things work.  [ This protects against overzealous template
> expansions. ]
>
> Similarly, I don't think you can (yet) easily do the attr() call on a
> sublist
> in a list.
>
> | 2) Your book is on my "to get a hold of somehow" list. Getting books to
> Israel
> | is always trickier - I might just get it when I'll visit the US in a few
> | months.
>
> I see.
>
> | 3) The post on Rcpp didn't get on R-bloggers since it wasn't marked with
> the
> | "R" category.
> | http://blog.revolutionanalytics.com/2013/07/
> | deepen-your-r-experience-with-rcpp.html
> | (David could still fix it if he wants to - and set the date of the post
> to be
> | more recent)
>
> I see. Could you email Joe (or David) ?
>
> | 4) Having an
> | is<List>(x) will be nice. Although I will need to see some examples to
> see when
> | it is better then simply using:
> | x.inherits("list")
> |
> | 5) I couldn't find a
> |  'dispatch on type' example in the Rcpp gallery.
> | I'm probably missing something in how I'm searching there.
>
> Sorry, I was thinking of
>
>    http://gallery.rcpp.org/articles/rcpp-wrap-and-recurse/
>
> which uses TYPEOF() and ...SXP to match on type.
>
> | 6) Environment.cpp in the unitTest is interesting. It is probably what I
> | needed.
>
> Yes!
>
> | 7) To Dirk and others - I will be happy to wait a bit to see if any of
> you can
> | help by writing the R functions from my previous e-mail in Rcpp. That
> would be
> | a big help for me in understanding how the relevant pieces should fit
> together.
> | (the functions themselves are not useful, but they require many of the
> features
> | I imagine I will need later on).
>
> Maybe start with something simpler.  Just recursing through a list and
> printing the (integer or whatever) elements is a very good exercise.
>
> Cheers, Dirk
>
> --
> Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130720/07f2e2cd/attachment.html>


More information about the Rcpp-devel mailing list