从 R 中的多个 Excel 文件追加多张工作表

Append multiple sheets from multiple Excel files in R

我正在尝试从多个 Excel 文件中附加多个工作表。例如,每个 Excel 文件有 10 张(不同格式),但一个 Excel 文件的 10 张与另一个 Excel 文件的相关 10 张具有相同的名称和格式。本质上,每个 Excel 文件包含不同国家的不同类型的信息,但每个国家收集的信息类型都是相同的(人口、污染指数、GDP 等)。我有很多国家,所以我正在考虑使用循环。

我使用“report_1h”作为主 Excel 文件,并将其他 Excel 文件的工作表附加到主文件的工作表中。

library(rio)

x1_data <- import_list("report_1h.xlsx")

report_list <- list.files(path = 'E:/Report_folder', pattern = '*.xlsx')

sheet_ <- data.frame()

for (file in report_list){
  book <- import_list(file)
  for (i in 1:31){
  sheet_[i] <- rbind(x1_data[[i]][,],book[[i]][,])
  x1_data[[i]][,] <- sheet_[i]
  }
}

该循环旨在将每个 Excel 文件中的工作表附加到主文件“report_1h”的工作表中。但它给出了错误:

Error in `[<-.data.frame`(`*tmp*`, i, value = c("Data Source(s):", "Data Source(s):",  : 
  replacement has 2 rows, data has 0

谁能告诉我为什么?

这是一种方法 -

library(tidyverse)

#get the all the filenames
report_list <- list.files(path = 'E:/Report_folder', pattern = '*.xlsx$')

#Create a list of dataframes
map(report_list, function(x) {
  sheets <-excel_sheets(x)
  map(sheets, function(y) read_excel(x, y))
}) %>% transpose() %>%
  map(bind_rows) -> result

#assign sheet names
names(result) <- paste0('Sheet', seq_along(result))

#Write master excel file
writexl::write_xlsx(result, 'master_excel.xlsx')