【问题标题】:sorting non-alphanumeric characters in ASCII order in R在R中按ASCII顺序对非字母数字字符进行排序
【发布时间】:2012-11-02 04:14:01
【问题描述】:

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

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

还有“!”按 ASCII 顺序应该在“-”之前。

非常感谢。

干杯, 约翰

【问题讨论】:

  • 如果您仔细阅读?sort,您会在底部看到一条注释,其中包含指向 R 中排序问题的一些讨论的链接,这可能会阐明该问题。

标签: r sorting ascii


【解决方案1】:

这是一个想法:

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"    

【讨论】:

  • Running Sys.setlocale("LC_COLLATE", "C") 似乎也对我有用,但我完全不知道这可能有多可靠。
  • @joran -- 这对我来说似乎更可取,但我也不知道它的解决方案有多通用/便携。 (我确实认为,一旦你开始传递我的函数非 ASCII 字符,所有的赌注都没有了。)
猜你喜欢
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 2016-12-05
  • 2018-11-20
相关资源
最近更新 更多