存储工作簿的内容以将列表中的dataframe分开

我正在尝试在Excel工作簿中读取未知数量的工作簿,并将每个工作表存储为variables的一部分(结果[1]给出工作表1,结果[2]给出工作表2等)。 我开始试图find一种方法来使用XLConnect包(我可以在Linux上正常工作)。 当我意识到我已经破解了几乎所有的R约定时,我停下来….任何人有更好的解决scheme,使用XLConnect包?

require(XLConnect) demoExcelFile <- system.file("demoFiles/multiregion.xlsx", package = "XLConnect") endloop<<-F x<<-1 result<<-NULL while(!endloop){ result[x] <<- tryCatch({ readWorksheetFromFile(demoExcelFile,sheet=x) x<<-x+1 }, error = function(e) { endloop<<-T }) } 

注:我打算使用其他软件包,我只是无法find另一个在64位Linux Mint上可靠工作的软件包

使用具有列表工作表function的readxl软件包。

 library(readxl) library(purrr) # get the sheet names sheetnames <- excel_sheets("path/to/myfile.xlsx") # loop through them and read each sheet into an item in a list. # alternatively, use lapply() instead of map() listofsheets <- map(sheetnames, ~ read_excel("path/to/myfile.xlsx", sheet = .x)) 

我会build议从tidyverse使用readxl。 你可以写如下的东西:

 library(readxl) sheets <- excel_sheets("insert_filepath/workbook.xlsx") data <- list() for (i in 1:length(sheets)) { data[[i]] <- read_excel("insert_filepath/workbook.xlsx", sheet = sheets[i]) } 

因为我没有你的Excel文件,我无法准确地重现你的数据。 但是,这应该是一个通用的解决scheme,它可以查找Excel文件中的所有表格名称,然后遍历每个表格,并将其读入名为“数据”的列表中

 require(XLConnect) # Load workbook wb <- loadWorkbook(system.file("demoFiles/multiregion.xlsx", package = "XLConnect")) # Read all worksheets into a list of data.frames listOfDfs <- readWorksheet(wb, sheet = getSheets(wb))