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

在R中使用gsub提取dataframe的ID列纯数字文件ID的问题

问题原因

你使用的[^0-9]正则会匹配移除所有非数字字符,但你的ID列路径中存在BAS1字段,其中的数字1会被保留,和文件名末尾的目标ID拼接后就出现了多余的前导1。

解决方法

推荐使用更精准的提取逻辑,避免路径中其他数字干扰,两种常用实现方式如下:

方法1:base R原生实现(无需额外安装包)

直接提取.txt后缀前的连续数字:

DF$ID <- sub(".*_(\\d+)\\.txt$", "\\1", DF$ID)

方法2:先取文件名再做替换

如果更习惯全局替换的写法,可以先用basename()去掉前缀路径,再清理非数字字符:

DF$ID <- gsub("[^0-9]", "", basename(DF$ID))

处理后的ID列就会完全符合你预期的纯数字效果,输出示例如下:

ID     mean   median      std       min      max count
1 33714 0.374389 0.374017 0.110854 0.1499130 0.650852    75
2 35377 0.368736 0.353222 0.144632 0.1080110 0.692352    75
3 38623 0.397192 0.390063 0.128366 0.1091700 0.672184    64
4 38806 0.483207 0.494330 0.106284 0.2353770 0.658852    62
5 39593 0.372074 0.323613 0.145565 0.1575710 0.723939   108
6 39820 0.367745 0.344656 0.178729 0.0690003 0.707643    42

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:06:05