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

如何基于列表名称信息重命名R语言列表中的值

R语言文件名重命名实现方法

方法1:使用Base R正则表达式处理

先定义原始文件名向量:

files <- c("JSMITH_WWWFRecvd2001_asof_20220901.xlsx", 
           "WSMITH_AMEXRecvd2002_asof_20220901.xlsx",
           "PSMITH_WWWFRecvd2003_asof_20220901.xlsx", 
           "QSMITH_AMEXRecvd2004_asof_20220901.xlsx")

用gsub配合正则提取目标内容并格式化:

new_names <- tolower(gsub(".*_(WWWF|AMEX)Recvd20(\\d{2})_.*\\.xlsx", "\\1_\\2", files))

执行后得到结果:

> new_names
[1] "wwwf_01" "amex_02" "wwwf_03" "amex_04"

正则表达式说明:

  • .*_:匹配下划线之前的所有字符(含下划线)
  • (WWWF|AMEX):捕获第一个目标分组,匹配"WWWF"或"AMEX"
  • Recvd20:匹配文件名中固定的"Recvd20"字符串
  • (\\d{2}):捕获第二个目标分组,提取年份的最后两位数字
  • _.*\\.xlsx:匹配从下划线开始到.xlsx结尾的所有剩余字符
  • \\1_\\2:将两个捕获组的内容用下划线连接作为替换结果
  • tolower():将最终结果转为小写

方法2:使用stringr包(tidyverse生态)

如果习惯用tidyverse工具,可通过stringr::str_replace实现相同逻辑:

# 未安装包先执行:install.packages("stringr")
library(stringr)

new_names <- tolower(str_replace(files, ".*_(WWWF|AMEX)Recvd20(\\d{2})_.*\\.xlsx", "\\1_\\2"))

运行后得到的结果与方法1完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:40:33