Re: SameTest in Union
- To: mathgroup at smc.vnet.net
- Subject: [mg61110] Re: [mg61106] SameTest in Union
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Tue, 11 Oct 2005 03:20:04 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
On 10 Oct 2005, at 15:40, Jack Goldberg wrote: > Hi Folks, > > I know there is a simple answer to this question but the help index > idoes not help! > > I have a list, something like this: > > lst = {1.1101, 1.11095, 1.11076, 1.09, 2.3523, 2.352. 2.35211} > > I want to remove from the list those entries which are near each > other but not identical, leaving only one representative for each of > these numbers. One approach is to use Union with the option > SameTest->???. Here the same test might be that the difference > between entries is less than, say 10^(-2). But I can't seem to get > SameTest to work. So, what I want is > > Union[ lst, SameTest- > ?] > > so that the union returns > > {1.1101, 2.35211} > > Here, I chose 2 representatives. Any other choice is OK; say, > > {1.11095, 2.352} > > is also satisfactory. > > There may be other ways to do this, but I thought of Union first. > Perhaps, Cases or Select might be better. Any help is appreciated. > > Jack > > The problem could be that your list has no comma between the last two entries. In[28]:= lst = {1.1101, 1.11095, 1.11076, 1.09, 2.3523, 2.352, 2.35211}; In[29]:= Union[lst, SameTest -> (Abs[#1 - #2] < 10^(-2) & )] Out[29]= {1.09, 1.1101, 2.352} Seems to wok fine? Andrzej Kozlowski