r - 读取同一目录中的所有 Excel 工作簿,每个工作簿都有多个工作表,并将每个工作表导出为 R 中的 .csv
问题描述
我正在尝试从多个工作簿中读取所有工作表,然后将每个工作表导出为自己的 .csv。我运行了这段代码:
files.to.read <- list.files(path = "/Users/filelocation", pattern="xlsx",
full.names = TRUE)
然后我应用这行代码将目录中的所有 xlsx 转换为 csv,但是它不考虑每个 xlsx 文件中的各个工作表。
lapply(files.to.read, function(x) {
df = read_excel(x, sheet=1)
write.csv(df, gsub("xlsx", "csv", x), row.names=FALSE)
})
考虑工作表的最佳方法是什么?我尝试在函数中使用 excel_sheets() 和 map_df() 但它一直返回
Error: `path` must be a string
请帮助并感谢社区!
解决方案
您需要先阅读所有工作簿,然后从每个工作簿中阅读其中的所有工作表。
使用lapply
您可以尝试:
library(readxl)
files.to.read <- list.files(path = "/Users/filelocation",
pattern="xlsx", full.names = TRUE)
lapply(files.to.read, function(x) {
sheets <- excel_sheets(x)
lapply(sheets, function(y) {
df = read_excel(x, sheet=y)
write.csv(df, paste0(tools::file_path_sans_ext(basename(x)), y, '.csv'),
row.names=FALSE)
})
})
推荐阅读
- image - Swift 5 Migration 已更改圆形图像
- r - Optim 函数返回错误的解决方案
- c# - 访问 Servicestack 请求和响应过滤器属性中的 JWT 令牌中的有效负载
- node.js - 如何对存储桶聚合阶段的输出进行排序?
- spring-boot - 如何在运行在 Tomcat 上的 Spring Web 应用程序中使用 Spring 的响应式 WebClient
- python - 如何使用 webdriver 单击此按钮?
- arduino - Alexa 与 ESP32 芯片的交互
- javascript - 我需要帮助创建淡入淡出效果
- html - 页脚覆盖页面内容
- types - 从 HashMap 转换
输入]