Re: Select only certain sublists matching criteria
- To: mathgroup at smc.vnet.net
- Subject: [mg111002] Re: Select only certain sublists matching criteria
- From: Chris Poole <chris at chrispoole.com>
- Date: Fri, 16 Jul 2010 05:18:41 -0400 (EDT)
Thanks. I actually solved the problem like so: DeleteCases[Table[ If[Abs[0.1 - oldlist[[i, 3]]] < 0.05, {oldlist[[i, 1]], oldlist[[i, 2]],oldlist[[i, 3]]}] , {i, 1, Length[oldlist]}], Null]; Seems very much like a hack though. I don't appear to have a SelectBy function (I'm using mathematica 7...), but using Select on its own, with #[[3]] worked a charm. I didn't realise I could still use the [[3]] notation here. Many thanks. On Thu, Jul 15, 2010 at 11:07 AM, Scot T. Martin <smartin at seas.harvard.edu> wrote: > I think you're after the function SelectBy instead of Select and then you= 're > after the use of #[[3]] in place of #. > > On Thu, 15 Jul 2010, Chris Poole wrote: > >> I have a list like this: >> {{0, -4, 2.283}, {0.5, -4, 2.282}, {1, -4, 2.280}, {1.5, -4, >> 2.276}, {2, -4, 2.271}, {2.5, -4, 2.264}, {3, -4, 2.255}, {3.5, -4, >> 2.242}} >> >> I want to look at each list of 3 numbers, and keep only the lists where >> the third item in each list fits some criteria. >> >> I can do something like this: >> Select[{2, 15, 1, 16, 17}, Abs[3 - #] < 3 &] >> >> But it only works for flat lists. >> >> For example, I want only the lists where the third item is around 2.25 += - >> 0.001. Something like that. >> >> I can work out how to get Select to operate on the 3rd item of each >> sublist, but not how to then keep that entire list. >> >> If anyone has any ideas, they are much appreciated. >> >> >