Как выполнить естественную сортировку? - PullRequest
19 голосов
/ 06 мая 2010

Существует ли натуральная сортировка для R?

Скажем, у меня был символьный вектор, например:

seq.names <- c('abc21', 'abc2', 'abc1', 'abc01', 'abc4', 'abc201', '1b', '1a')

Я бы хотел отсортировать его по буквам, поэтому я вернусь к этому:

c('1a', '1b', 'abc1', 'abc01', 'abc2', 'abc4', 'abc21', 'abc201')

Это где-то существует, или я должен начать кодировать?

1 Ответ

33 голосов
/ 06 мая 2010

Я не думаю, что «алфавитно-цифровая сортировка» означает то, что вы думаете, что означает.

В любом случае выглядит так, как вы хотите mixedsort .

> install.packages('gtools')
[...]
> require('gtools')
Loading required package: gtools
> n
[1] "abc21"  "abc2"   "abc1"   "abc01"  "abc4"   "abc201" "1b"     "1a"    
> mixedsort(n)
[1] "1a"     "1b"     "abc1"   "abc01"  "abc2"   "abc4"   "abc21"  "abc201"
...