在保留数字顺序的同时排序字符值[重复]

问题描述 投票:2回答:1

我有一个像下面这样的字符向量:

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

r alphabetical
1个回答
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" 
© www.soinside.com 2019 - 2024. All rights reserved.