如何批量去除各样本名前缀 仅保留最后两段后缀(如AAP-L)
R语言提取样本名最后两段后缀实现方案
直接从字符串结构入手提取末尾两段即可,无需删除数字,可完美适配所有前缀长度不统一、包含特殊字符(如.)的样本名,不会破坏后续分组需要的标识信息。
基础R实现(无需安装额外包)
核心逻辑是按分隔符-拆分每个样本名,取拆分结果的最后2段重新拼接:
geo$pd$sample_id <- sapply(strsplit(geo$pd$title, "-"), function(seg) { paste(tail(seg, 2), collapse = "-") })
正则实现(代码更简洁,运行效率更高)
如果习惯用stringr包,可直接通过正则匹配字符串末尾的两段内容,一步得到结果:
library(stringr) geo$pd$sample_id <- str_extract(geo$pd$title, "[^-]+-[^-]+$")
效果验证
针对给出的典型样本名,处理结果完全符合预期:
- 输入
AAB-HT002-AAP-L→ 输出AAP-L - 输入
AAB-N-C021-Normal-NC→ 输出Normal-NC - 输入
AAB-HT010-AAP.T-L→ 输出AAP.T-L - 输入
AABM046-AAP-L→ 输出AAP-L - 输入
AAB-M-060-AU-L→ 输出AU-L
注意:此前删除所有数字的方案会误删分组标识中的有效字符(如样本编号、分组标签关联的数字/特殊字符),无法满足分组需求,不建议使用。上述两种方案均从字符串末尾定位目标内容,不受前缀长度、前缀包含的字符类型影响,可覆盖给出的全部122条样本数据。
内容的提问来源于stack exchange,提问作者Equal
相关产品推荐
相关产品推荐

