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

Hervé Pagès hpages at fredhutch.org
Wed Sep 30 22:33:43 CEST 2015


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>
> 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 mailing list
>> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>>
>
> 	[[alternative HTML version deleted]]
>
> _______________________________________________
> 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
Phone:  (206) 667-5791
Fax:    (206) 667-1319



More information about the Bioc-devel mailing list