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

如何按指定规则对含数字字符串的vector进行升序排序?

文件名分组自然排序解决方案

针对需求——先按R1/R2分组排序,组内按文件名末尾数字自然升序(1、2、9、10)排列,这里用R语言给出实现方案:

核心思路

  1. 从文件名中提取分组标识(R1/R2)作为第一排序键;
  2. 提取文件名末尾的数字部分并转为数值类型(避免字典序排序导致10排在2前面的问题),作为第二排序键;
  3. 按两个排序键依次升序排序。

代码实现

# 原始文件名列表
files <- c(
  "W2345_S-001-R1_1.csv", "W2346_S-001-R1_10.csv",
  "W2347_S-001-R1_2.csv", "W2348_S-001-R1_9.csv",
  "W2345_S-001-R2_1.csv", "W2346_S-001-R2_10.csv",
  "W2347_S-001-R2_2.csv", "W2348_S-001-R2_9.csv"
)

# 提取分组标识(R1/R2)
group <- sub(".*(R\\d).*", "\\1", files)
# 提取末尾数字并转为数值类型
end_num <- as.numeric(sub(".*_(\\d+)\\.csv", "\\1", files))

# 按分组、末尾数字升序排序
sorted_files <- files[order(group, end_num)]

# 输出排序结果
sorted_files

运行结果

[1] "W2345_S-001-R1_1.csv"  "W2347_S-001-R1_2.csv"  "W2348_S-001-R1_9.csv"  "W2346_S-001-R1_10.csv"
[5] "W2345_S-001-R2_1.csv"  "W2347_S-001-R2_2.csv"  "W2348_S-001-R2_9.csv"  "W2346_S-001-R2_10.csv"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:55:15