首页 > 解决方案 > 如何在R中将xlsx文件列表转换并导出为csv文件

问题描述

我正在尝试将大量 .xlsx 文件转换为 .csv,同时还为它们指定了一个新文件夹或目录。具体来说,我想在我的工作目录中创建一个新文件夹来存放新的-转换的 .csv 文件。

基于前面的例子,我已经设法使用以下代码完成了转换部分

setwd("~/Myfolder")

files.to.read = list.files(pattern="xlsx")

lapply(files.to.read, function(f) {  
df = read.xlsx(f, sheetIndex=1)  
write.csv(df, gsub("xlsx", "csv", f), row.names=FALSE)})

这成功地将我原始工作目录中的所有 .xlsx 文件转换为 .csv 。但是,我想要的是在该目录中创建一个新的子文件夹并将这些 .csv 文件放入其中。我知道答案可能涉及 在命令中添加dir.create() 或 添加。但是,当我使用它们中的任何一个时,都会出现以下错误。file.path()write.csv()

Error in file(file, ifelse(append, "a", "w")) : invalid 'open' argument

标签: rcsvexport-to-csvlapplyxlsx

解决方案


没有可重复的例子很难知道。如果你尝试做会发生什么read.xlsx(files.to.read[1], sheetIndex=1)

如果这行得通,那么你已经很接近了。

dir.create("your_folder_name")

files.to.read = list.files(pattern="xlsx")

lapply(files.to.read, function(f) {  
df = read.xlsx(f, sheetIndex=1)
# Make the new filename here
new_filename = file.path(getwd(), "your_folder_name", gsub("xlsx", "csv", f))  
write.csv(df, new_filename , row.names=FALSE)
# provide some feedback
print(paste("Writing", new_filename))
}
)

可能是您的list.files()命令有问题。如果以前失败,请尝试:

# Mind the full.names=TRUE to get the full path
files.to.read = list.files(pattern="xlsx", full.names=TRUE)

并摆脱这new_filename条线。您不需要通过 创建它file.path,只需像以前一样使用该gsub命令即可。


推荐阅读