将多个工作表导入 R 中的多个数据框
Import Multiple Sheets into Multiple Data Frames in R
我有一个包含很多 sheet 的 Excel 文件,我需要一个代码来将每个 sheet 导入一个单独的数据框中,该数据框将以相同的约定命名作为 Excel 中的 sheet 名称。
例如,选项卡 A、B、C 将分别作为数据框 A、B 和 C 导入。
从其他线程中,我看到如下代码:
length(excel_sheets(filename))
获取文件中sheet的个数
然后创建一个包含每个选项卡的列表:
read_excel_allsheets <- function(filename) {
sheets <- readxl::excel_sheets(filename)
x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X))
names(x) <- sheets
x
}
但我不知道这些选项卡是如何从那里导入到 R 中的。
非常感谢您的帮助。
提前致谢!
这是一种方法:
# write test data
tf <- writexl::write_xlsx(
list("the mtcars" = mtcars, "iris data" = iris),
tempfile(fileext = ".xlsx")
)
# read excel sheets
sheets <- readxl::excel_sheets(tf)
lst <- lapply(sheets, function(sheet)
readxl::read_excel(tf, sheet = sheet)
)
names(lst) <- sheets
# shove them into global environment
list2env(lst, envir = .GlobalEnv)
您的函数读取所有选项卡并将它们保存为单个列表的元素(因为 lapply()
)。您可以使用 list2env
:
从列表中取出元素
your_excel_list <- read_excel_allsheets("test.xlsx")
list2env(your_excel_list, .GlobalEnv)
您会看到列表中的命名元素现在是全局环境中的数据框(或者实际上 tbl_df
)
可以一行读完。
应该加载 magrittr 和 dplyr 包。
data <- lapply(list.files(pattern = "*.xlsx"),function(x) x=read_excel(x,sheet = "(sheetname)")) %>% bind_rows
我有一个包含很多 sheet 的 Excel 文件,我需要一个代码来将每个 sheet 导入一个单独的数据框中,该数据框将以相同的约定命名作为 Excel 中的 sheet 名称。
例如,选项卡 A、B、C 将分别作为数据框 A、B 和 C 导入。
从其他线程中,我看到如下代码:
length(excel_sheets(filename))
获取文件中sheet的个数
然后创建一个包含每个选项卡的列表:
read_excel_allsheets <- function(filename) {
sheets <- readxl::excel_sheets(filename)
x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X))
names(x) <- sheets
x
}
但我不知道这些选项卡是如何从那里导入到 R 中的。
非常感谢您的帮助。 提前致谢!
这是一种方法:
# write test data
tf <- writexl::write_xlsx(
list("the mtcars" = mtcars, "iris data" = iris),
tempfile(fileext = ".xlsx")
)
# read excel sheets
sheets <- readxl::excel_sheets(tf)
lst <- lapply(sheets, function(sheet)
readxl::read_excel(tf, sheet = sheet)
)
names(lst) <- sheets
# shove them into global environment
list2env(lst, envir = .GlobalEnv)
您的函数读取所有选项卡并将它们保存为单个列表的元素(因为 lapply()
)。您可以使用 list2env
:
your_excel_list <- read_excel_allsheets("test.xlsx")
list2env(your_excel_list, .GlobalEnv)
您会看到列表中的命名元素现在是全局环境中的数据框(或者实际上 tbl_df
)
可以一行读完。 应该加载 magrittr 和 dplyr 包。
data <- lapply(list.files(pattern = "*.xlsx"),function(x) x=read_excel(x,sheet = "(sheetname)")) %>% bind_rows