r - 如何在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
解决方案
没有可重复的例子很难知道。如果你尝试做会发生什么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
命令即可。
推荐阅读
- azure - 如何在超级账本结构中设置多云架构?
- python - 谁能解释一下seaborn的set_context()?
- android - 如何使用 kotlin 将片段名称与当前月份进行比较?
- javascript - 如何修复未捕获的类型错误:无法读取未定义的属性“名称”
- c# - 在 Visual Studio C# 中使用文本框过滤 DataGridView
- go - 无法将 json 数据解组为 go 中的结构(无法将数组解组为 Go 结构字段)
- featuretools - 我在哪里可以找到 dfs [featuretools] 默认返回的功能
- azure - Azure 搜索无法找到 PDF 文件中文本的位置和突出显示
- javascript - 在另一个 httprequest 中使用来自一个 httprequest 的 JSON 值
- slack-api - Slack 事件 API:从不接收“im_created”事件