Re: Sorting on multiple columns within a matrix

*To*: mathgroup at smc.vnet.net*Subject*: [mg57844] Re: Sorting on multiple columns within a matrix*From*: Lee Newman <leenewm at umich.edu>*Date*: Fri, 10 Jun 2005 02:29:08 -0400 (EDT)*References*: <d892lm$sc6$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

dh -- thanks, your solution works, but it seems it might be awkward to extend it to many more than two columns. I am wondering if anyone knows a way to generalize dh's solution such that it could be applied as a pure function to a list which contains the columns to sort? I noodled over it but was unable to figure it out. Something like: Sort[matrix, puresortfunc[#] ]& /@ {1,14,2,4} where 1,14,2,4 are the columns to use for sorting, and puresortfunc is this tricky sorting function that would successively map # to the elements in the list of columns to sort. Lee Lee Newman wrote: > Hello, > > I can't come up with a solution to the following simple task: > > - I have a matrix, let's M={ {"Z",2,"a"},{"A",2,"k"}, {"Z",1,"z"}, > {"A",1,"a"},{"Z",3,"k"}, {"A",3,"z"} } > - I want to be able to sort the matrix row-wise, based on multiple > columns, for example sort first on column 2 (ascending) and then > secondly on column1 (ascending) > > desired result: > A 1 a > Z 1 z > A 2 k > Z 2 a > A 3 z > Z 3 k > > I suspect the solution involves using a pure function of some form as > the second argument in the Sort function, but I can't figure out what > this function should be. > > Thanks, > Lee >