[R] find index in a list of list

ce zadig_1 at excite.com
Sat Mar 11 18:01:29 CET 2017


Thank you both, indeed combining two solutions fixed my problem :

> which(sapply(mylist, mycompare,find))
[1] 2

I admit list of lists is not the optimal design,  it's out of my control but is there is not much data in it, so performance is not an  issue.
For the sake of R's honour I didn't want to use "for loop".

ce


-----Original Message-----
From: "Jeff Newmiller" [jdnewmil at dcn.davis.ca.us]
Date: 03/11/2017 11:23 AM
To: r-help at r-project.org, "ce" <zadig_1 at excite.com>, "Rui Barradas" <ruipbarradas at sapo.pt>
Subject: Re: [R] find index in a list of list

Since the offered solution already checks each top level element using the "identical" function, you just need a different comparison function, like perhaps:

mycompare <- function( x, y ) {
   identical( x[[ "a" ]], y[[ "a" ]] ) && identical( x[[ "b" ]], y[[ "b" ]] )
}

Note that your decision to store this data in a list of lists is making this search process much less computationally and syntactically efficient than it would be if you could fit your data into a data frame.
-- 
Sent from my phone. Please excuse my brevity.

On March 11, 2017 7:17:11 AM PST, ce <zadig_1 at excite.com> wrote:
>
>
>Sorry I rejoiced  too soon. In fact original list is more complex like
>:
>
>mylist <-
>list(list(a=10,b="x",c=1),list(a=11,b="y",c=2),list(a=12,b="z",c=5))
>
>and I still need to find index of where a = 11 and b = "y"  and I have
>no c value , 
>
>-----Original Message-----
>From: "ce" [zadig_1 at excite.com]
>Date: 03/11/2017 10:13 AM
>To: r-help at r-project.org, "Rui Barradas" <ruipbarradas at sapo.pt>
>Subject: Re: [R] find index in a list of list
>
>
>Exactly. Thanks a lot, I was trying sapply with to result. 
>
>-----Original Message-----
>From: "Rui Barradas" [ruipbarradas at sapo.pt]
>Date: 03/11/2017 10:06 AM
>To: "ce" <zadig_1 at excite.com>, r-help at r-project.org
>Subject: Re: [R] find index in a list of list
>
>Hello,
>
>Something like this?
>
>find <- list(a=11,b="y")
>which(sapply(mylist, identical, find))
>
>Hope this helps,
>
>Rui Barradas
>
>
>Em 11-03-2017 14:59, ce escreveu:
>> Hi all,
>>
>> I have a list of lists like this :
>>
>> mylist <- list(list(a=10,b="x"),list(a=11,b="y"),list(a=12,b="z"))
>>
>> I want to find the index of list in mylist where a = 11 and b  = "y" 
>, so I want to get 2 as a result
>>
>> Thanks in advance
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> 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.
>>
>
>______________________________________________
>R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>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.
>
>______________________________________________
>R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>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.



More information about the R-help mailing list