R base函数根据长度对字符串向量进行排序

时间:2014-03-11 12:26:29

标签: r sorting string-length

我想知道R base包中是否有一个已经制作的函数可以对字符串向量进行排序,同时考虑每个元素的长度,然后是字典顺序。 例如,在对某些持有年龄组的向量进行 sort 调用之后,您将拥有:

v <- c("00-04", "05-09", "10-14", "100-104", "105-109", "110-114", "15-19", "20-24"..etc)

虽然我想:

v <- c("00-04", "05-09", "10-14", "15-19", "20-24"..etc.. "100-104", "105-109", "110-114")

2 个答案:

答案 0 :(得分:15)

只需order

v[order(nchar(v), v)]

## [1] "00-04"   "05-09"   "10-14"   "15-19"   "20-24"   "100-104" "105-109" "110-114"

这就是你要找的东西吗?

答案 1 :(得分:2)

不在R base中,但是这会将字符串拆分为数字和字符部分并进行适当排序:

v <- c("00-04", "05-09", "10-14", "100-104", "105-109", "110-114", "15-19", "20-24")
library(gtools)
mixedsort(v)
#[1] "00-04"   "05-09"   "10-14"   "15-19"   "20-24"   "100-104" "105-109" "110-114"

如果您不想加载/依赖它,您可以随时复制gtools包中定义的mixedorder函数的代码。