如何将 xlsx 文件列表转换并导出到 R 中的 csv 文件
How to convert and export a list of xlsx files to csv files in R
我正在尝试将大量 .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
没有可重现的例子很难知道。如果您尝试执行 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
命令。
我正在尝试将大量 .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
没有可重现的例子很难知道。如果您尝试执行 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
命令。