Ответ 1
Вам нужно изменить локаль, в которой работает R. Либо сделайте это для всей вашей установки Windows (что кажется субоптимальным), либо в пределах R-сеансов с помощью:
Sys.setlocale("LC_COLLATE", "C")
Вместо "C"
вы можете использовать любую другую допустимую строку locale, но это должно вернуть вас к порядку сортировки для letters
, который вы хотите.
Подробнее читайте ?locales
.
Я полагаю, стоит отметить сестринскую функцию Sys.getlocale()
, которая запрашивает текущую настройку параметра locale. Следовательно, вы могли бы сделать
(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"
который, конечно же, является тем, что @Hadley Answer показывает with_collate()
, делая несколько более лаконично, как только вы установили devtools.