2010-05-06 19 views
14

¿Hay un natural sort para R?¿Cómo realizar la clasificación natural?

decir que tenía un carácter vectorial de este modo:

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

me gustaría resolverlo aphanumerically, por lo que volver a esto:

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

¿Este existen en algún lugar, o debería empezar a codificar?

Respuesta

26

No creo que "tipo alfanumérico" signifique lo que usted piensa que significa.

En cualquier caso, parece que quiere 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

¡Excelente! ¿El género alfanumérico no es el término correcto para esto? ¿Lo he estado llamando mal todo el tiempo? – cbare

+1

Tipo alfanumérico quisiera que lo que se devuelve de la función R sort(). Cada personaje se evalúa en función del valor ASCII de la posición. Los valores más pequeños se ordenan primero. En este caso, "abc01" sería antes de "abc1" porque el valor ASCII "0" (48) es menor que "1" (49) para la posición 4. – beach

+4

Normalmente utilicé el término "clasificación de orden natural" después de uno de las primeras piezas de software ampliamente utilizadas para hacer esto (http://www.naturalordersort.org/). Jeff Atwood incluso escribió una publicación en el blog sobre ella (http://www.codinghorror.com/blog/2007/12/sorting-for-humans-natural-sort-order.html). –

Cuestiones relacionadas