如何在 R 中执行自然(字典顺序)排序?
R 是否有自然排序?
假设我有一个像这样的字符向量:
seq.names <- c('abc21', 'abc2', 'abc1', 'abc01', 'abc4', 'abc201', '1b', '1a')
我想按字母顺序对它进行排序,所以我得到这个:
c('1a', '1b', 'abc1', 'abc01', 'abc2', 'abc4', 'abc21', 'abc201')
这是否存在于某个地方,或者我应该开始编码?
Is there a natural sort for R?
Say I had a character vector like so:
seq.names <- c('abc21', 'abc2', 'abc1', 'abc01', 'abc4', 'abc201', '1b', '1a')
I'd like to sort it aphanumerically, so I get back this:
c('1a', '1b', 'abc1', 'abc01', 'abc2', 'abc4', 'abc21', 'abc201')
Does this exist somewhere, or should I start coding?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不认为“字母数字排序”意味着你认为的意思。
无论如何,看起来您想要混合排序,它是 gtools 的一部分。
I don't think "alphanumeric sort" means what you think it means.
In any case, looks like you want mixedsort, part of gtools.
自然排序可在
stringr
/stringi
包中使用str_sort()
/stri_sort()
函数实现。字母数字排序和自然排序之间的切换由“数字”参数控制。配套函数
str_order()
/stri_order()
返回索引,以(默认)升序排列向量:Natural sorting is available in the
stringr
/stringi
packages with the functionsstr_sort()
/stri_sort()
. Switching between alphanumeric and natural sorting is controlled by the 'numeric' argument.The companion function
str_order()
/stri_order()
returns the indices to arrange the vector in (by default) ascending order: