You can use factor() or match() to specify a particular order. E.g., > mat<-cbind(c('w','x','y','z'),c('a','b','c','d')) > ind<-c('c','b','d','a') > mat[ order(match(mat[,2], ind)), ] [,1] [,2] [1,] "y" "c" [2,] "x" "b" [3,] "z" "d" [4,] "w" "a" > mat[ order( factor(mat[,2], levels=ind) ), ] [,1] [,2] [1,] "y" "c" [2,] "x" "b" [3,] "z" "d" [4,] "w" "a"
Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On > Behalf > Of array chip > Sent: Thursday, January 10, 2013 10:22 AM > To: r-help@r-project.org > Subject: [R] sort matrix based on a specific order > > Hi I have a character matrix with 2 columns A and B, If I want to sort the > matrix based on > the column B, but based on a specific order of characters: > > mat<-cbind(c('w','x','y','z'),c('a','b','c','d')) > ind<-c('c','b','d','a') > > I want "mat" to be sorted by the sequence in "ind": > > [,1] [,2] > [1,] "y" "c" > [2,] "x" "b" > [3,] "z" "d" > [4,] "w" "a" > > Is there any simple function that can do this? > > Thanks > > John > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.