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

时间:2012-11-13 17:33:47

标签: r sorting ascii

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

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

还是“!”应该以ASCII顺序在“ - ”之前出现。

非常感谢。

欢呼声, 约翰

1 个答案:

答案 0 :(得分: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"