MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Eliminate duplicates using Union [] in a


Mark Coleman wrote:
> I know that if one applies the Union command to a list of values, it 
> will return the list with duplicates removed. Can I use the Union 
> command to eliminate duplicate when I have a list of data "records"? 

Hi Mark,

Yes, you can. Use the SameTest option of Union to specify a function 
which returns true if two elements are considered equal and false 
otherwise. In your case, you say you need to compare a pair of fields 
from each record to each other. You might try something like, if say the 
two fields have indexes 2 and 3:

In[15]:= dataset = {{1, 2, 3}, {4, 5, 6}, {3, 2, 3}}; (* First and third 
are "duplicates" *)

In[16]:= MySameTest[a_, b_] := {a[[2]], a[[3]]} === {b[[2]], b[[3]]}

In[17]:= Union[dataset, SameTest -> MySameTest]

Out[17]= {{1, 2, 3}, {4, 5, 6}}

In[18]:= (* or, using a pure function: *)

In[19]:= Union[dataset,
    SameTest -> ({#1[[2]], #1[[3]]} === {#2[[2]], #2[[3]]} &)]

Out[19]= {{1, 2, 3}, {4, 5, 6}}

Hope this helps,

-   Torben


  • Prev by Date: Re: Finding errors in my code?
  • Next by Date: Re: System of DE's
  • Previous by thread: RE: Eliminate duplicates using Union [] in a
  • Next by thread: Uniform design