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

Hervé Pagès hpages at fredhutch.org
Fri Oct 16 08:17:53 CEST 2015


On 10/15/2015 11:24 AM, Michael Lawrence wrote:
> 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.

There is actually a big note in ?BiocGenerics::lengths about this.
This means we will need to keep elementLengths() around but the plan
is to rename it elementNROWS() (consistent with extractROWS). The
current name is clearly a misnomer and a source of confusion.

H.

>
> On Wed, Sep 30, 2015 at 9:37 PM, Hervé Pagès <hpages at fredhutch.org
> <mailto: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>
>         <mailto: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>
>         <mailto: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>
>         <mailto: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>
>         <mailto: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>
>         <mailto:hpages at fredhutch.org <mailto:hpages at fredhutch.org>>
>              Phone: (206) 667-5791 <tel:%28206%29%20667-5791>
>         <tel:%28206%29%20667-5791>
>              Fax: (206) 667-1319 <tel:%28206%29%20667-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 <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



More information about the Bioc-devel mailing list