在排序字符串时不要忽略大小写

时间:2010-11-22 12:02:14

标签: sorting r vector character

R中是否有内置功能可以对字符向量进行排序? sortorder忽略此案:

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"

1 个答案:

答案 0 :(得分:12)

关注post about Auto-completion in Notepad++您可以更改本地设置:

Sys.setlocale(, "C")
sort(tv)
# [1] "A"  "B"  "a"  "ab"

EDIT。我阅读了Sys.setlocale的帮助页面,似乎更改LC_COLLATE就足够了:Sys.setlocale("LC_COLLATE", "C")

要临时更改分页以进行排序,您可以使用withr包:

withr::with_collate("C", sort(tv))

或使用stringr包(如@dracodoc评论中所示):

stringr::str_sort(tv, locale="C")

我认为这是最好的方法。

相关问题