Re: identical rows in tables
- To: mathgroup at smc.vnet.net
- Subject: [mg97634] Re: identical rows in tables
- From: "Sjoerd C. de Vries" <sjoerd.c.devries at gmail.com>
- Date: Tue, 17 Mar 2009 05:01:46 -0500 (EST)
- References: <gpl5qr$oss$1@smc.vnet.net>
Hi Peter, You could try Tally to find rows that occur more than once, and then Position to find their location: 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, 8, 7, 6, 5, 4, 3, 2}, {1, 8, 6, 7, 4, 5, 2, 3}, {1, 3, 2, 5, 4, 7, 6, 8}, {1, 3, 5, 2, 7, 4, 8, 6}}; doubles = Position[data, #] & /@ Select[Tally[data], (#[[2]] > 1) &][[All, 1]] // Flatten; Grid[data, ItemStyle -> {Automatic, Sequence[Thread[doubles -> Table[Red, {Length[doubles]}]]]}] Why would you turn the separate numbers in one string? Wouldn't that make the result ambiguous if n>9? Anyways: StringJoin @@@ (Map[ToString, data, {2}]) will do the trick (use an additional ToExpression to convert to a number). The function Strings in the Combinatorica package generates permuations of strings. Cheers -- Sjoerd On Mar 16, 11:23 am, "King, Peter R" <peter.k... at imperial.ac.uk> 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). > > But in the following {{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, 8, > 7, 6, 5, 4, 3, 2}, {1, 8, 6, 7, 4, 5, 2, 3}, {1, 3, 2, 5, 4, 7, 6, > 8}, {1, 3, 5, 2, 7, 4, 8, 6},....} > > there is a pair {1, 3, 2, 5, 4, 7, 6, > 8}, {1, 3, 5, 2, 7, 4, 8, 6} which are the same. > > In an ideal world when I print out (in say TableForm) the repeated rows can > be printed in red (or some specified colour) > > These rows are permutations if that makes any difference. The tables can be > of any size (but always permutations of n numbers) > > as a subsidiary question is there an easy way to convert the tables into > numbers (or strings) eg > > {12345678,14628375,14263857 etc} > > Alternatively is there an easy way to perform permutations on strings of > characters? > > Many thanks for your help to the multiple questions > ps I am using Mathematica 6.03