存储工作簿的内容以在列表中分隔 data.frames
Store contents of workbook to separate data.frames in a list
我正在尝试读取 Excel 工作簿中的 sheet 数量未知,并将每个 sheet 作为变量的一部分存储(结果 [1] 给出 sheet 1,结果 [2] 给出 sheet 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
我建议使用 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 文件中找到所有 sheet 名称,然后遍历每个 sheet 并将它们读入名为 'data'[=11 的列表中=]
使用具有列出sheet个名字的功能的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))
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))
我正在尝试读取 Excel 工作簿中的 sheet 数量未知,并将每个 sheet 作为变量的一部分存储(结果 [1] 给出 sheet 1,结果 [2] 给出 sheet 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
我建议使用 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 文件中找到所有 sheet 名称,然后遍历每个 sheet 并将它们读入名为 'data'[=11 的列表中=]
使用具有列出sheet个名字的功能的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))
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))