One other option is to use the mixedsort() function, which is in the gtools package on CRAN:
library(gtools) x <- c(4, 5, 6, 8, 9, 11, "Y", 1, 13, 15, 16, 20, "X", 2, 3, 10, 14, 19, "XY", 7, 12, 18, 17, 22, 21) > mixedsort(x) [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" [14] "14" "15" "16" "17" "18" "19" "20" "21" "22" "X" "XY" "Y" HTH, Marc Schwartz On Mar 10, 2010, at 5:36 PM, Phil Spector wrote: > Soyeon - > It sounds like you want a combination of a numerical > sort and a lexigraphical sort. I think they need to be done separately, and > then joined back together: > >> myvec = scan(,what='') > 1: 4 5 6 8 9 11 Y 1 13 15 16 20 X 2 3 10 14 19 XY 7 12 18 17 22 21 > 26: Read 25 items >> myvecn = as.numeric(myvec) > Warning message: > NAs introduced by coercion >> c(sort(myvecn),sort(myvec[is.na(myvecn)])) > [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" > [16] "16" "17" "18" "19" "20" "21" "22" "X" "XY" "Y" > > > > On Wed, 10 Mar 2010, Soyeon Kim wrote: > >> Dear All, >> >> I want to sort a character type vector. >> the vector is >> [1] 4 5 6 8 9 11 Y 1 13 15 16 20 X 2 3 10 14 19 XY 7 12 18 17 22 >> [25] 21 >> >> and I want to sort 1-22 X Y XY or 1-22 X XY Y. >> How can I do that? >> >> Thanks, ______________________________________________ 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.