在R中按ASCII顺序排序非字母数字字符

use*_*573 3 sorting ascii r

任何想法如何按ASCII顺序(如C)对包含非字母数字字符的字符向量进行排序?一个例子来说明:

> v<-c("#1-adfgh3$","-d","!cd3&")
> sort(v)
[1] "-d"         "!cd3&"      "#1-adfgh3$"
Run Code Online (Sandbox Code Playgroud)

然而"!" 应该在ASCII顺序中以" - "之前出现.

非常感谢.

欢呼,约翰

Jos*_*ien 6

这是一个想法:

asciiSort <- function(vec) {
    x <- sapply(vec, 
                function(X) {
                    paste0(strtoi(charToRaw(X), base=16), collapse="")
                })
    vec[order(x)]
}

asciiSort(v)
# [1] "!cd3&"      "#1-adfgh3$" "-d"    
Run Code Online (Sandbox Code Playgroud)

  • 运行`Sys.setlocale("LC_COLLATE","C")`似乎对我有用,但我完全不知道可能有多可靠. (3认同)