[R] list: index of the element, that is TRUE
Hadley Wickham
hadley at rice.edu
Mon Jan 16 18:15:11 CET 2012
On Mon, Jan 16, 2012 at 10:15 AM, Duncan Murdoch
<murdoch.duncan at gmail.com> wrote:
> On 12-01-16 10:34 AM, Marion Wenty wrote:
>>
>> Dear People,
>>
>> I have got the following example for a vector and the index of the TRUE
>> element:
>>
>> Myvector<- c(FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE)
>> which(Myvector)
>>
>> Now I would like to find out the same for a list:
>>
>> Mylist<- list(FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE)
>>
>> ...
>>
>> Does anyone know how to do this?
>
>
> What are the possible values in your list? If it always contains TRUE and
> FALSE and nothing else, then unlist() will work (as suggested by others).
> If there are other possibilities, unlist() might mess up, e.g.
>
> unlist( list(TRUE, 1:3, FALSE) )
>
> won't give a vector of length 3. In that case,
>
> which(sapply(MyList, isTRUE) )
Or if you're writing a function:
which(vapply(MyList, isTRUE, logical(1)))
which will work even if length(MyList) == 0
Hadley
--
Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University
http://had.co.nz/
More information about the R-help
mailing list