Thanks Herve. I might not be so bad to have rep out in the unnamed case
(think of NULL names meaning wildcard). If we had:

i <- IntegerList(1:5)
x[i]

The 'i' does not really identify any one element in 'x'. If both 'i' and
'x' had names, then there would be a matching, but otherwise, truncating
'x' to length(i) is surprising, and it's hard to imagine a use-case for it.
In some ways, this is analogous to logical indexing, which is recycled.

But that said, my use case is really more of a pluckHead/Tail. Don't worry
about this release.

Michael



On Tue, Apr 1, 2014 at 12:06 PM, Hervé Pagès <hpages@fhcrc.org> wrote:

> On 04/01/2014 10:17 AM, Ryan wrote:
>
>> That won't work if any vector has fewer than 5 elements. Maybe
>>
>> lapply(x, head, n=5)
>>
>> would work?
>>
>
> Yes. Note that you can use endoapply() to preserve the class of the
> original object:
>
>   > endoapply(cvg, head, n=5)
>
>   RleList of length 3
>   $chr1
>   integer-Rle of length 5 with 2 runs
>     Lengths: 4 1
>     Values : 1 2
>
>
>   $chr2
>   integer-Rle of length 5 with 4 runs
>     Lengths: 1 1 1 2
>     Values : 0 1 2 3
>
>   $chr3
>   integer-Rle of length 5 with 1 run
>     Lengths: 5
>     Values : 0
>
> But lapply- or endoapply-based solutions are slower than a [ based
> solution. Unfortunately the latter requires too much munging to get
> the subscript right:
>
>   ## parallel seq_len()
>   pseq_len <- function(eltlens)
>   {
>     ans_skeleton <- PartitioningByWidth(eltlens)
>     tmp <- relist(seq_len(sum(eltlens)), ans_skeleton)
>     tmp - start(ans_skeleton) + 1L
>   }
>
> Then:
>
>   > pseq_len(c(5, 1, 0, 2))
>   IntegerList of length 4
>   [[1]] 1 2 3 4 5
>   [[2]] 1
>   [[3]] integer(0)
>   [[4]] 1 2
>
>   > cvg[pseq_len(pmin(elementLengths(cvg), 5))]
>
>   RleList of length 3
>   $chr1
>   integer-Rle of length 5 with 2 runs
>     Lengths: 4 1
>     Values : 1 2
>
>
>   $chr2
>   integer-Rle of length 5 with 4 runs
>     Lengths: 1 1 1 2
>     Values : 0 1 2 3
>
>   $chr3
>   integer-Rle of length 5 with 1 run
>     Lengths: 5
>     Values : 0
>
> H.
>
>
>
>> On Tue Apr  1 09:24:51 2014, Cook, Malcolm wrote:
>>
>>> in the mean time,
>>>
>>> lapply(`[`,x,IntegerList(1:5))
>>>
>>> ??
>>>
>>>   >-----Original Message-----
>>>   >From: bioc-devel-bounces@r-project.org
>>> [mailto:bioc-devel-bounces@r-project.org] On Behalf Of Michael Lawrence
>>>   >Sent: Tuesday, April 01, 2014 9:21 AM
>>>   >To: bioc-devel@r-project.org
>>>   >Subject: [Bioc-devel] Subsetting Lists by Lists
>>>   >
>>>   >Mostly to Herve:
>>>   >
>>>   >Sometimes we want to pluck the first 1, or 10, or whatever elements
>>> from
>>>   >each element of a list. If I had a list 'x', I thought I could do
>>> this with:
>>>   >
>>>   >x[IntegerList(1:5)]
>>>   >
>>>   >But it only gives elements 1:5 from x[[1]], not each element of
>>> 'x'. In
>>>   >other words, I thought the index would be repped out. Instead, 'x' is
>>>   >subset to the length of 'i', and I'm not sure if that makes sense?
>>>   >
>>>   >But maybe what we really want are pluckHead/Tail, which would be
>>> robust to
>>>   >the case that < n elements are in an element. And of course a more
>>> general
>>>   >pluck(x, i) to select 'i' from each element, but I wanted the line
>>> above to
>>>   >do that.
>>>   >
>>>   >Michael
>>>   >
>>>   >    [[alternative HTML version deleted]]
>>>   >
>>>   >_______________________________________________
>>>   >Bioc-devel@r-project.org mailing list
>>>   >https://stat.ethz.ch/mailman/listinfo/bioc-devel
>>>
>>> _______________________________________________
>>> Bioc-devel@r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>>>
>>
>> _______________________________________________
>> Bioc-devel@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@fhcrc.org
> Phone:  (206) 667-5791
> Fax:    (206) 667-1319
>

	[[alternative HTML version deleted]]

