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"
最佳答案
在post about Auto-completion in 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
软件包(如@dracodoc注释中所示):stringr::str_sort(tv, locale="C")
我认为这是最好的方法。
关于sorting - 字符串排序时不要忽略大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4245196/