在r中追加多个Excel文件中的多个工作表



我试图从多个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')

最新更新