[Bioc-devel] Adding a lengths() method to List class

Michael Lawrence lawrence.michael at gene.com
Thu Oct 15 20:24:12 CEST 2015


Btw, a subtle issue here is that elementLengths currently calls NROW(), not
length(), and code might be relying on DataFrameList returning row counts.
That behavior has proven convenient, so it would be nice not to lose it. I
guess nrow() already does that, but anyway, lengths() is not the equivalent
of elementLengths() there.

On Wed, Sep 30, 2015 at 9:37 PM, Hervé Pagès <hpages at fredhutch.org> wrote:

> On 09/30/2015 05:28 PM, Michael Lawrence wrote:
>
>> It wasn't a conscious choice, but it would slow things down a bit. Not
>> by much though, since we're already attempting dispatch on length(). I
>> can make the change.
>>
>
> That would be great. Thanks Michael!
>
> H.
>
>
>> On Wed, Sep 30, 2015 at 1:33 PM, Hervé Pagès <hpages at fredhutch.org
>> <mailto:hpages at fredhutch.org>> wrote:
>>
>>     Hi Michael,
>>
>>     I was expecting this to just work:
>>
>>        base::lengths(IntegerList(1:4, 1:6))
>>
>>     but it doesn't:
>>
>>        Error in base::lengths(IntegerList(1:4, 1:6)) :
>>          'x' must be a list or atomic vector
>>
>>     The man page says:
>>
>>           This function loops over ‘x’ and returns a compatible vector
>>           containing the length of each element in ‘x’.  Effectively,
>>           ‘length(x[[i]])’ is called for all ‘i’, so any methods on
>> ‘length’
>>           are considered.
>>
>>     If length(x[[i]]) is called for all i then it should work on any
>> object
>>     for which [[ is defined. Note that this is what happens with
>>     base::sapply(), base::mapply(), etc... they all use [[ internally.
>>
>>     Do you know of any reason why lengths() doesn't do this?
>>
>>     Thanks,
>>     H.
>>
>>
>>     On 09/28/2015 09:51 PM, Michael Lawrence wrote:
>>
>>         That is the plan. Note that we already have elementLengths()
>>         that serves
>>         the same purpose. It was the direct inspiration for lengths().
>>
>>         On Mon, Sep 28, 2015 at 9:41 PM, Peter Hickey
>>         <peter.hickey at gmail.com <mailto:peter.hickey at gmail.com>>
>>         wrote:
>>
>>             The lengths() function was added in R 3.2 to "get the length
>>             of each
>>             element of a list or atomic vector (is.atomic) as an integer
>>             or numeric
>>             vector." It seems useful to me to have also a similar method
>>             defined for
>>             the S4Vectors::List class (and subclasses). What do others
>>             think?
>>
>>                       [[alternative HTML version deleted]]
>>
>>             _______________________________________________
>>             Bioc-devel at r-project.org <mailto:Bioc-devel at r-project.org>
>>             mailing list
>>             https://stat.ethz.ch/mailman/listinfo/bioc-devel
>>
>>
>>                  [[alternative HTML version deleted]]
>>
>>         _______________________________________________
>>         Bioc-devel at r-project.org <mailto:Bioc-devel at r-project.org>
>>         mailing list
>>         https://stat.ethz.ch/mailman/listinfo/bioc-devel
>>
>>
>>     --
>>     Hervé Pagès
>>
>>     Program in Computational Biology
>>     Division of Public Health Sciences
>>     Fred Hutchinson Cancer Research Center
>>     1100 Fairview Ave. N, M1-B514
>>     P.O. Box 19024
>>     Seattle, WA 98109-1024
>>
>>     E-mail: hpages at fredhutch.org <mailto:hpages at fredhutch.org>
>>     Phone: (206) 667-5791 <tel:%28206%29%20667-5791>
>>     Fax: (206) 667-1319 <tel:%28206%29%20667-1319>
>>
>>
>>
> --
> Hervé Pagès
>
> Program in Computational Biology
> Division of Public Health Sciences
> Fred Hutchinson Cancer Research Center
> 1100 Fairview Ave. N, M1-B514
> P.O. Box 19024
> Seattle, WA 98109-1024
>
> E-mail: hpages at fredhutch.org
> Phone:  (206) 667-5791
> Fax:    (206) 667-1319
>

	[[alternative HTML version deleted]]



More information about the Bioc-devel mailing list