【问题标题】:R: unexpected natural sorting by gtools mixedsortR:gtools 混合排序的意外自然排序
【发布时间】:2021-11-22 02:25:46
【问题描述】:

我只是在 gtools::mixedsort 中发现了一些意想不到的行为,看看我的输出是如何自然排序的。

我有一个这样的例子:

aa=c("CD57","CD58","CD158","CD158b","CD158e","CD158e1","CD319","CD335")
gtools::mixedsort(aa)

我的预期结果是:

[1] "CD57"    "CD58"    "CD158"   "CD158b"  "CD158e"  "CD158e1" "CD319"
[8] "CD335"

但是我得到了这个:

[1] "CD57"    "CD58"    "CD158"   "CD158b"  "CD158e"  "CD319"   "CD335"
[8] "CD158e1"

这是正确的吗?是什么原因?

【问题讨论】:

    标签: r sorting vector natural-sort


    【解决方案1】:

    CD158e1 在这里被视为1580,因为:

    >>> 158e1
    1580.0
    >>> 
    

    158e1 是带有e 的欧拉数,所以它会多出一个0e2 会多出2 个,依此类推...

    这就是为什么它被解析为列表中的最后一个。


    the documentation of mixedsort中所述:

    这些函数对包含嵌入的字符串进行排序或排序 数字,以便数字按数字排序而不是排序 按字符值。 IE。 “阿司匹林 50mg”将出现在“阿司匹林”之前 100mg”。另外,字符串的大小写被忽略,因此“a”, 将出现在“B”和“C”之前。

    【讨论】:

    猜你喜欢
    • 2018-06-15
    • 2021-02-03
    • 1970-01-01
    • 2019-06-30
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    相关资源
    最近更新 更多