我想知道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")
答案 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
函数的代码。