有什么办法可以按照ASCII顺序(如C语言)对包含非字母数字字符的字符向量进行排序吗?以下是一个示例:
> v<-c("#1-adfgh3$","-d","!cd3&")
> sort(v)
[1] "-d" "!cd3&" "#1-adfgh3$"
在ASCII码中,“!”应该在“-”之前。
非常感谢。
祝好, 约翰
这是一个想法:
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"
Sys.setlocale("LC_COLLATE", "C")
对我似乎也起作用了,但我不确定其可靠性如何。 - joran
?sort
,你会看到底部有一个链接,指向一些关于R中排序问题的讨论,这可能会对该问题有所启示。 - joran