R语言:如何让write.csv输出沿用read.csv2读取的原文件名并加日期后缀
R语言自动匹配读写文件名的实现方案
核心逻辑
不要把输入文件名硬编码两次,把待读取的输入文件名存为独立变量,后续读文件、提取文件名基础部分、拼接输出名全部复用这个变量即可,从根源上避免手动修改读入文件名时,漏改输出文件名的问题。
分步操作
- 定义输入文件的独立变量,后续所有文件操作都复用这个值
input_file <- "2005Calc.csv" LKCalc <- read.csv2(input_file) - 生成符合格式要求的日期后缀,和原有代码逻辑完全一致
output_date <- format(Sys.time(), "%d-%m-%Y") - 提取输入文件不带
.csv扩展名的基础文件名注意:不要手动通过截取字符串的方式提取无扩展名的文件名,这类写法遇到文件名中间带点的场景(例如
项目2024.01.数据.csv)很容易截断错误,使用R内置的tools::file_path_sans_ext()是最稳妥的方案,这个函数会自动识别文件名最后一个点对应的扩展名,不管文件名中间有多少个点都不会出错。base_name <- tools::file_path_sans_ext(input_file) - 拼接生成最终输出文件名
csvFileName <- paste0(base_name, output_date, ".csv") - 执行写出操作
write.csv(LKCalc, file = csvFileName)
完整可直接运行的代码
# 仅需根据实际读取的文件修改这一行的文件名即可 input_file <- "2005Calc.csv" # 读取数据 LKCalc <- read.csv2(input_file) # 生成指定格式的日期后缀 output_date <- format(Sys.time(), "%d-%m-%Y") # 自动提取基础名拼接输出文件名 base_name <- tools::file_path_sans_ext(input_file) csvFileName <- paste0(base_name, output_date, ".csv") # 写出文件 write.csv(LKCalc, file = csvFileName)
效果说明
当输入文件为2005Calc.csv时,代码运行后生成的输出文件名为2005Calc+当天日期字符串.csv,例如运行当日为28-01-2021时,输出文件就是2005Calc28-01-2021.csv,完全匹配需求。后续需要更换读取的文件时,仅需修改input_file的赋值内容即可,其他代码无需任何调整。
内容的提问来源于stack exchange,提问作者Suusie
相关产品推荐
相关产品推荐

