vocales tienen tiene quien que puso primera porque porq por ordeno orden letra las importante ese conocer alfabeto alfabetico abecedario r locale alphabetical-sort

tienen - quien ordeno el alfabeto



La letra "y" viene después de "i" cuando se ordena alfabéticamente (2)

Cuando se usa la función sort(x) , donde x es un carácter, la letra "y" salta al medio, justo después de la letra "i":

> letters [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" [21] "u" "v" "w" "x" "y" "z" > sort(letters) [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "y" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" [21] "t" "u" "v" "w" "x" "z"

La razón puede ser que estoy en Lituania, y esta es una clasificación de letras de tipo "lituano", pero necesito una clasificación normal. ¿Cómo cambio el método de clasificación a normal dentro del código R?

Estoy usando R 2.15.2 en Win7.


Debe cambiar la configuración regional en la que se está ejecutando R. O haga eso para su instalación completa de Windows (que parece subóptima) o dentro de las sesiones de R a través de:

Sys.setlocale("LC_COLLATE", "C")

Puede usar cualquier otra cadena de configuración regional válida en lugar de "C" , pero eso debería hacer que vuelva al orden de las letters que desea.

Leer ?locales para más.

Supongo que vale la pena señalar la función hermana Sys.getlocale() , que consulta la configuración actual de un parámetro de configuración regional. Por lo que podrias hacer

(locCol <- Sys.getlocale("LC_COLLATE")) Sys.setlocale("LC_COLLATE", "lt_LT") sort(letters) Sys.setlocale("LC_COLLATE", locCol) sort(letters) Sys.getlocale("LC_COLLATE") ## giving: > (locCol <- Sys.getlocale("LC_COLLATE")) [1] "en_GB.UTF-8" > Sys.setlocale("LC_COLLATE", "lt_LT") [1] "lt_LT" > sort(letters) [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "y" "j" "k" "l" "m" "n" [16] "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "z" > Sys.setlocale("LC_COLLATE", locCol) [1] "en_GB.UTF-8" > sort(letters) [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" [16] "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" > Sys.getlocale("LC_COLLATE") [1] "en_GB.UTF-8"

que, por supuesto, es lo que @ Hadley''s Answer muestra con with_collate() haciendo un poco más sucintamente una vez que haya instalado devtools .


Si quieres hacer esto temporalmente, devtools proporciona la función with_collate :

library(devtools) with_collate("C", sort(letters)) # [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" # [20] "t" "u" "v" "w" "x" "y" "z" with_collate("lt_LT", sort(letters)) # [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "y" "j" "k" "l" "m" "n" "o" "p" "q" "r" # [20] "s" "t" "u" "v" "w" "x" "z"