我正在尝试读取具有未知张数的Excel工作簿,并将每个工作表存储为变量的一部分(结果[1]给出工作表1,结果[2]给出工作表2等)。我开始尝试使用XLConnect包(我可以在Linux上正常工作)找到一种方法。当我意识到我几乎已经破坏了每个R约定时,我停了下来....任何人都有更好的解决方案,使用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
})
}
注意:我打开使用其他软件包,我只是找不到另一个在64位Linux Mint上可靠运行的软件包
答案 0 :(得分:1)
使用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))
答案 1 :(得分:0)
我建议使用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文件,所以我无法准确地重现您的数据。但这应该是一个通用的解决方案,可以在Excel文件中查找所有工作表名称,然后遍历每个工作表并将其读入名为“数据”的列表
答案 2 :(得分:0)
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))