[Rcpp-devel] Returning an element from a List with its attributes?

Tal Galili tal.galili at gmail.com
Tue Aug 20 23:31:09 CEST 2013


Dear Wush and others,
Just to followup and say I've used this idea here:
https://github.com/talgalili/dendextendRcpp/blob/master/src/cut_lower.cpp

In general, it would have been better for me, where it possible to do some
(or all) of the things below:
1) Get the length of a List
2) Change the attribute of elements within a list
3) Have this not happen:

require(Rcpp)
cppFunction('
            SEXP temp(List x){
            return(x);
            }
            ')
x = list(structure(1L, animal = "cat"))
temp(x)
temp(x[[1]]) # I wish this didn't happen

(I'm possibly missing out things, but I thought of listing it just in case)


Many thanks for the help!
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 Tue, Aug 20, 2013 at 12:25 PM, Tal Galili <tal.galili at gmail.com> wrote:

> Hello Wush,
> Indeed, thank you!
>
> I will write more on this after I finish the code, since there are some
> bits which are a mystery to me.
>
> 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 Tue, Aug 20, 2013 at 12:13 PM, Wush Wu <wush978 at gmail.com> wrote:
>
>> Hi Tal,
>>
>> ```
>> cppFunction('
>> std::vector<RObject>  temp2_fail(RObject x){
>>    std::vector<RObject> lower;
>>    List x_list(wrap(x));
>>    int n = x_list.size();
>>    lower.push_back(x);
>>    return(lower) ;
>> }
>>             ')
>> ```
>>
>> Is this what you want?
>>
>>
>> 2013/8/20 Tal Galili <tal.galili at gmail.com>
>>
>>> Dear list members,
>>>
>>> I would like to be able to get an element pushed with its attributes,
>>> and I came across the following problem:
>>>
>>> cppFunction('
>>> std::vector<List>  temp(List x){
>>>    std::vector<List> lower;
>>>    lower.push_back(x);
>>>    return(lower) ;
>>> }
>>>             ')
>>> x = list(structure(1L, animal = "cat"))
>>> temp(x)
>>> temp(x[1])
>>> temp(x[[1]]) # is there a way to not make this output without attributes?
>>>
>>>
>>>
>>> If I use RObject, it will solve it, but then I would later not be able
>>> to iterate over the object, because I can't seem to get the .size() of an
>>> RObject.
>>>
>>> Here is the code with the RObject:
>>>
>>>
>>> cppFunction('
>>> std::vector<RObject>  temp2(RObject x){
>>>    std::vector<RObject> lower;
>>>    lower.push_back(x);
>>>    return(lower) ;
>>> }
>>>             ')
>>> x = list(structure(1L, animal = "cat"))
>>> temp2(x)
>>> temp2(x[1])
>>> temp2(x[[1]]) # Now it works as I want, but the following wouldn't work:
>>>
>>>
>>>
>>>
>>> cppFunction('
>>> std::vector<RObject>  temp2_fail(RObject x){
>>>    std::vector<RObject> lower;
>>>    int n x.size();
>>>    lower.push_back(x);
>>>    return(lower) ;
>>> }
>>>             ')
>>>
>>>
>>>
>>> Any ideas?
>>>
>>>
>>>
>>>
>>> ----------------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)
>>>
>>> ----------------------------------------------------------------------------------------------
>>>
>>>
>>> _______________________________________________
>>> 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
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130821/b150d1e0/attachment.html>


More information about the Rcpp-devel mailing list