Re: identical rows in tables
- To: mathgroup at smc.vnet.net
- Subject: [mg97635] Re: identical rows in tables
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Tue, 17 Mar 2009 05:01:58 -0500 (EST)
On 3/16/09 at 4:23 AM, peter.king at imperial.ac.uk (King, Peter R) wrote: >I have a table of values >e.g.{{1, 2, 3, 4, 5, 6, 7, 8}, {1, 4, 6, 2, 8, 3, 7, 5}, {1, 4, 2, >6, 3, >8, 5, 7}, {1, 3, 2, 5, 4, 7, 6, 8}, {1, 3, 5, 2, 7, 4, 8, 6}, {1, 2, >4, 3, 6, 5, 8, 7}, {1, 2, 3, 4, 5, 6, 7, 8}} >and want to check if any rows are identical (so there are none in the >above - I can remove last or first row which are supposed to be the >same). I normally use Union with Length to identify lists with duplicates, i.e. In[4]:= data = {{1, 2, 3, 4, 5, 6, 7, 8}, {1, 4, 6, 2, 8, 3, 7, 5}, {1, 4, 2, 6, 3, 8, 5, 7}, {1, 3, 2, 5, 4, 7, 6, 8}, {1, 3, 5, 2, 7, 4, 8, 6}, {1, 2, 4, 3, 6, 5, 8, 7}, {1, 2, 3, 4, 5, 6, 7, 8}}; In[5]:= Length[data] == Length[Union@data] Out[5]= False indicating the presence of a duplicated item. >In an ideal world when I print out (in say TableForm) the repeated >rows can be printed in red (or some specified colour) Here is one way: ({#, Count[data, #]} & /@ data) /. {{a_, 1} :> Style[a, Black], {a_, b_} :> Style[a, Red]} // TableForm >as a subsidiary question is there an easy way to convert the tables >into numbers (or strings) eg >{12345678,14628375,14263857 etc} =46or numbers =46romDigits /@ data =46or strings StringJoin@@@Map[ToString,data,{2}]