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

如何在R中通过向量操作条件重命名文件名向量元素?

用R向量操作批量修改文件名前缀

现有如下带日期后缀的文件名向量(示例中当日为20240618,昨日为20240617):

fileNames <- c("Accounts-20240617.csv", "Advisors-20240617.csv", "Customer Names-20240618.csv",
"Sales-20240617.csv", "Transactions-20240618.csv", "Users-20240617.csv")

需要批量修改前缀:含当日日期的文件名前加t-,含昨日日期的加y-,最终得到:

modifiedFileNames <- c("y-Accounts-20240617.csv", "y-Advisors-20240617.csv", "t-Customer Names-20240618.csv",
"y-Sales-20240617.csv", "t-Transactions-20240618.csv", "y-Users-20240617.csv")

不用for循环,仅用R的向量操作就能实现,以下是几种简洁方法:


方法1:基础向量操作(grepl + ifelse)

利用grepl批量判断每个文件名是否包含目标日期,再通过ifelse批量拼接前缀:

today_date <- "20240618"
yesterday_date <- "20240617"

modifiedFileNames <- ifelse(grepl(today_date, fileNames), 
                           paste0("t-", fileNames), 
                           paste0("y-", fileNames))

方法2:stringr包向量化字符串处理

如果习惯用tidyverse生态工具,stringr的向量化替换可以更简洁地完成任务:

library(stringr)

# 方式1:根据日期检测结果添加前缀
modifiedFileNames <- str_replace(fileNames, 
                                "^", 
                                ifelse(str_detect(fileNames, "20240618"), "t-", "y-"))

# 方式2:直接匹配日期段替换,逻辑更直观
modifiedFileNames <- str_replace(fileNames, 
                                "(.*)-20240618\\.csv", 
                                "t-\\1-20240618.csv") %>%
  str_replace("(.*)-20240617\\.csv", 
              "y-\\1-20240617.csv")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:22:33