[R] Compare each element of a list to a vector

Patrick Burns pburns at pburns.seanet.com
Sun Feb 3 19:33:18 CET 2013


My attempt similar to Jim's is:

which(sapply(datalist, function(z) all(z == x)))


However, a safer approach is:

which(sapply(datalist, function(z) isTRUE(all.equal(z, x))))

This latter approach avoids Circle 1 of 'The R Inferno'.

http://www.burns-stat.com/documents/books/the-r-inferno/

Pat


On 03/02/2013 18:24, jim holtman wrote:
> try this:
>
>> x<-c(1,2,3)
>> datalist<-list(c(1,2,3),c(2,3,4),c(3,4,5),c(4,5,6))
>>
>> result <- sapply(datalist, function(.vec){
> +     all(.vec == x)
> + })
>>
>> result
> [1]  TRUE FALSE FALSE FALSE
>>
>
>
> On Sun, Feb 3, 2013 at 1:15 PM,  <mtb954 at gmail.com> wrote:
>> Hello R-helpers,
>>
>> I have a vector
>>
>> x<-c(1,2,3)
>>
>> and a list that contains vectors
>>
>> datalist<-list(c(1,2,3),c(2,3,4),c(3,4,5),c(4,5,6))
>>
>> and I would like to identify those list elements that are identical to x.
>>
>> I tried
>>
>>> datalist %in% x
>> [1] FALSE FALSE FALSE FALSE
>>
>> but I am obviously using %in% incorrectly. I also tried messing around with
>> lapply but I can't figure out how to specify the function within lapply.
>>
>> I would appreciate any suggestions you may have.
>>
>> Many thanks!
>>
>> Mark Na
>>
>>          [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
>
>

-- 
Patrick Burns
pburns at pburns.seanet.com
twitter: @burnsstat @portfolioprobe
http://www.portfolioprobe.com/blog
http://www.burns-stat.com
(home of:
  'Impatient R'
  'The R Inferno'
  'Tao Te Programming')



More information about the R-help mailing list