2010-05-06 4 views
14

R에 natural sort이 있습니까? 자연 분류 작업을 수행하는 방법은 무엇입니까?

내가 문자 벡터과 같이 한 말 :

seq.names <- c('abc21', 'abc2', 'abc1', 'abc01', 'abc4', 'abc201', '1b', '1a') 
내가 aphanumerically를 정렬하고 싶습니다

, 그래서 나는 다시이 얻을 :

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

이 어딘가에 존재 하는가, 아니면 내가해야 코딩을 시작 하시겠습니까?

답변

26

"영숫자 정렬"은 사용자가 생각하는 것을 의미하지 않는다고 생각합니다.

어쨌든 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" 
+0

우수! 영숫자 정렬이이 올바른 용어가 아닌가? 나는 그것을 틀린 것이라고 항상 부르짖 었습니까? – cbare

+1

영숫자 정렬은 R sort() 함수에서 반환되는 것을 원합니다. 각 문자는 위치의 ASCII 값에 따라 평가됩니다. 더 작은 값이 먼저 정렬됩니다. 이 경우, ASCII 값 "0"(48)이 위치 4에 대해 "1"(49)보다 작기 때문에 "abc01"은 "abc1"앞에옵니다. – beach

+4

일반적으로 용어 "자연 순서 정렬"은 이 작업을 수행하기 위해 처음으로 널리 사용되는 소프트웨어 중 하나 (http://www.naturalordersort.org/). Jeff Atwood도 블로그 게시물을 썼습니다 (http://www.codinghorror.com/blog/2007/12/sorting-for-humans-natural-sort-order.html). –

관련 문제