如何在R语言中将CSV文件转换为Excel时保留原文件名?
解决CSV转Excel保留原文件名的问题
这个问题很好解决,核心就是从你的文件路径里提取原文件名、替换后缀就行啦!你原来的代码用循环序号生成文件名,所以才会出现file1.xlsx这类命名,我们只需要修改生成文件名的逻辑:
修改后的完整代码
filenames <- list.files("D:/finished CSVs", pattern="*.csv", full.names=TRUE) for(i in 1:length(filenames)) { a <- read.csv(filenames[i]) # 第一步:从完整路径中提取纯文件名(比如从"D:/xxx/analysis report.csv"拿到"analysis report.csv") original_filename <- basename(filenames[i]) # 第二步:去掉.csv后缀,得到不带扩展名的原文件名 name_no_ext <- tools::file_path_sans_ext(original_filename) # 第三步:拼接成.xlsx格式的新文件名 new_xlsx_name <- paste0(name_no_ext, ".xlsx") # 如果你想把生成的Excel文件保存在原CSV所在的目录,也可以这样写(确保路径正确): # new_xlsx_name <- file.path(dirname(filenames[i]), paste0(name_no_ext, ".xlsx")) write.xlsx(a, new_xlsx_name) }
关键步骤解释
basename():专门用来从完整文件路径中剥离路径部分,只留下文件名和扩展名。tools::file_path_sans_ext():R内置工具函数,用来移除文件名的扩展名,不用自己写字符串替换,更可靠。paste0():和paste()类似,但默认没有分隔符,用来拼接文件名和.xlsx后缀刚好合适。
这样修改后,你的analysis report.csv就会生成analysis report.xlsx,budgeting.csv生成budgeting.xlsx,完美保留原文件名~
内容的提问来源于stack exchange,提问作者RLearner
相关产品推荐
相关产品推荐

