【问题标题】:Ordering character values while preserving number order [duplicate]在保留数字顺序的同时对字符值进行排序[重复]
【发布时间】:2018-10-05 05:39:03
【问题描述】:

我有一个如下字符向量:

char <- c("C.1", "C.3", "C.10", "A.5", "D.4", "A.50", "A.49")

我想按字母顺序对它们进行排序,但如果我这样做了

char[order(char)]

我明白了

[1] "A.49" "A.5"  "A.50" "C.1"  "C.10" "C.3"  "D.4" 

但是,所需的输出是 A.5, A.49, A.50, C.1, C.3, C.10, D.4,因为我想保留实际数字本身的顺序。

我怎样才能像这样重新排序char

【问题讨论】:

  • 看看gtools::mixedsort。很确定这是一个重复的问题。

标签: r alphabetical


【解决方案1】:

我相信有很多方法可以做到这一点。这是一个使用stringr 的示例。我提取字母并将其作为第一个参数输入order,然后提取数字并将其用作order 的第二个参数。

library(stringr)
char[order(str_extract(char,"\\w"), strtoi(str_extract(char,"\\d+")))]
# [1] "A.5"  "A.49" "A.50" "C.1"  "C.3"  "C.10" "D.4" 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-04
    • 2020-03-08
    • 2013-06-10
    • 2015-03-16
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多