You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言gtools包mixedsort自然排序结果不符合预期问题咨询

问题解答

排序结果是否符合设计逻辑

是,你看到的实际输出完全符合gtools包mixedsort函数的默认设计逻辑。

差异产生的原因

核心原因是mixedsort默认开启了科学计数法数值识别规则:
它会自动将字符串中符合[数字]e[数字]格式的片段识别为科学计数法表示的整体数值,而非拆分为「数字+字母e+数字」三个独立的排序片段。

对应你的测试用例,各个字符串的排序权重计算逻辑如下:

  • CD57:拆分结果为 字符串前缀CD + 数值57
  • CD58:拆分结果为 字符串前缀CD + 数值58
  • CD158:拆分结果为 字符串前缀CD + 数值158
  • CD158b:拆分结果为 字符串前缀CD + 数值158 + 字符串后缀b
  • CD158e:拆分结果为 字符串前缀CD + 数值158 + 字符串后缀e
  • CD319:拆分结果为 字符串前缀CD + 数值319
  • CD335:拆分结果为 字符串前缀CD + 数值335
  • CD158e1:158e1被识别为科学计数法数值158*10^1=1580,拆分结果为 字符串前缀CD + 数值1580

数值维度排序为57 < 58 < 158 < 319 < 335 < 1580,相同数值前缀的字符串按后缀字典序排序,因此最终输出顺序和你拿到的实际结果一致。

实现预期排序的方法

如果需要得到你预期的自然排序结果,关闭科学计数法识别即可:

gtools::mixedsort(aa, scientific = FALSE)

运行后输出就是你需要的顺序:

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

内容的提问来源于stack exchange,提问作者DaniCee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:30:04