【问题标题】:R base function to sort vector of strings based on lengthR基函数根据长度对字符串向量进行排序
【发布时间】:2014-04-15 01:32:55
【问题描述】:

我想知道 R 基础包中是否已经有一个函数可以对字符串向量进行排序,同时考虑每个元素的长度,当然还有字典顺序。 例如,在对一些持有年龄组的向量进行 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")

【问题讨论】:

  • v[order(nchar(v))]?
  • 是的。谢谢你。这成功了,不需要任何其他库:]

标签: r sorting string-length


【解决方案1】:

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

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 函数的代码。

【讨论】:

  • 我选择了 Ananda 给出的答案,因为它不需要另一个库。也谢谢你的回答。
【解决方案2】:

只需order

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

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

这就是你要找的吗?

【讨论】:

  • 是的。即使阿南达是第一个提供解决方案的人,我也会接受这是“官方”答案。谢谢。
  • @Marius,没问题。我正在打电话,所以我无法验证我的答案,而且我不喜欢发布我不知道的答案。 :-)
猜你喜欢
  • 2013-11-05
  • 1970-01-01
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 2015-08-13
  • 2011-02-04
  • 2017-07-19
相关资源
最近更新 更多