在R中按数字大小排序字符

在R中,有时希望按照数字大小而不是默认的字符顺序来排序含有数字的字符向量(character vector)。

例如把

1
c("v10", "v7", "v2")

排序成

1
[1] "v2" "v7"  "v10"

而不是

1
[1] "v10" "v2"  "v7"

有两种实现方法

Use gtools package

1
2
3
> library("gtools")
> mixedsort(c("v10", "v7", "v2"))
[1] "v2" "v7" "v10"

Use tidyverse

如果是要排序dataframe中的列,可以直接

1
2
> library("tidyverse")
> select(dataframe, num_range("v", 2:10))

参考

[1] https://stackoverflow.com/questions/17531403
[2] https://dplyr.tidyverse.org/reference/select.html