在R中是否有内置的功能可以按照大小写排序字符向量?sort
和order
忽略大小写:
tv <- c("a", "A", "ab", "B")
sort(tv)
## [1] "a" "A" "ab" "B"
这是我迄今为止的解决方案:
CAPS <- grep("^[A-Z]", tv)
c(sort(tv[CAPS]), sort(tv[-CAPS]))
## [1] "A" "B" "a" "ab"
在Notepad++自动完成文章之后,您可以更改本地设置:
Sys.setlocale(, "C")
sort(tv)
# [1] "A" "B" "a" "ab"
编辑。我阅读了有关Sys.setlocale
的帮助页面,似乎更改LC_COLLATE
就足够了:Sys.setlocale("LC_COLLATE", "C")
要临时更改排序的排序规则,您可以使用withr
包:
withr::with_collate("C", sort(tv))
stringr::str_sort
和它的locale
参数来完成类似的操作,但是这并不起作用(tidyverse/stringr#440)。
stringr::str_sort
,您可以分配语言环境,以便它具有一致的结果。 - dracodocstringr::str_sort
忽略当前设置,因此它将不区分大小写地排序 (stringr::str_sort(tv)
). - Marek