我有一个如下字符向量:
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
?
答案 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"