在保留数字顺序的同时对字符值进行排序

时间:2018-04-24 20:46:30

标签: r alphabetical

我有一个如下字符向量:

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

1 个答案:

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