Re: Re: Sorting a list of pairs on the second elements

*To*: mathgroup at smc.vnet.net*Subject*: [mg51412] Re: [mg51372] Re: Sorting a list of pairs on the second elements*From*: János <janos.lobb at yale.edu>*Date*: Sat, 16 Oct 2004 04:20:51 -0400 (EDT)*References*: <cklmi7$f1o$1@smc.vnet.net> <200410150647.CAA05265@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

On Oct 15, 2004, at 2:47 AM, Peltio wrote: > "János" wrote > >> Map[Reverse,Sort[Map[Reverse,collectedDnaBin]]] > >> Sort[collectedDnaBin,#1[[2]] < #2[[2]] &] >> but that does not want to do the trick for me. > > I wonder why. It should work, albeit inefficently. Mmmmm, have you > tried > with parenthesis wrapped around the pure function? > Sort[collectedDnaBin,(#1[[2]] < #2[[2]])&] > Have you tried it in a fresh kernel? Yes, and yes. It does not work. In[31]:= Sort[sss, (Last[#1] < Last[#2] )&] Out[31]= {{gggcggcgacctcgcgggttttcgctatttatgaaaattttccggtttaaggcgtttccgttcttcttcg \ tcataacttaatgtttttatttaaaatacc,1},{\ tatttttgtaattcaatactgcttcttcttgcctttgcggaatttggccttttaaaagtatttatcg,13}, {\ tatttttgtaattcaatactgcttcttcttgcctttgcggaatttggccttttaaa,12},{\ tatttttgtaattcaatactgcttcttctt,11},{aaattttccggtttaaggcgtttccgttcttcttcg tca,\ 122},{aaattttccggtttaaggcgtttccgttctt,121},{ttcttgcctttgcgg,1211},{\ actgcttcttcttgcctttgcggaatttg,1221},{\ gctatttatgaaaattttccggtttaaggcgtttccgttcttcttcgtcataa,133},{\ gctatttatgaaaattttccggtttaaggcg,132},{gctatttat,131},{gcggaatttggcctttta aa,\ 1321},{aaattttcc,13211},{aatactgcttcttcttgcctttgcggaatttggccttttaaaagt,1 331},{\ tgaaaattttccggttt,13311}} Maybe because they are Strings ? I am just guessing... > >> In general, if I have a list whose elements are m-member lists, like >> {{a1,...,am},...,{z1,...,zm}}, then my question is what is the >> best/fastest way to sort it on the k-th elements of the members where >> 1<=k<=m and ak,...,zk are arbitrary objects - in my case Strings - and >> use as little memory for it as possible. > > Dunno for the general case, but this -very inelegant - approach to sort > according to the last element seems to be pretty fast (lots of > procedures > but applied to the data as a whole, without timeconsuming mapping on > every > single element) > > Transpose@Reverse@Transpose@Sort@Transpose@Reverse@Transpose[ > collectedDnaBin ] This one works fine. > > ( The first and last three procs just implement a swap function > swap[list_]:=Transpose@Reverse@Transpose[list] > ) > > The group's gurus will certainly find a proc at least ten times faster > than > this, I'm sure. I don't know. The suggestions I got via the list and private are all excellent, but the data I had to sort got so big that I even did not get to that point to able to sort because the Kernel just quitted on me half way. Now I am on a different "war-path" to get the results I need :) /My secret prayers go out for a real 64-bit, or MORE, Mathematica on OSX..../ Thanks a lot, János > > cheers, > Peltio > Invalid address in reply-to. Crafty demunging required to mail me. I tried to employ Mathematica in "Crafty demunging" but I failed, so I send it "as is". Now I embrace for an "Addressee not found..." thunder... :) > > > ------------------------------------------------------------------- János Löbb Yale University School of Medicine Department of Pathology Phone: 203-737-5204 Fax: 203-785-7303 E-mail: janos.lobb at yale.edu

**Follow-Ups**:**Re: Re: Re: Sorting a list of pairs on the second elements***From:*DrBob <drbob@bigfoot.com>

**References**:**Re: Sorting a list of pairs on the second elements***From:*"Peltio" <peltio@twilight.zone>