用Excel或运算符从Excel中读入可选表格

我有一个包含数千个Excel工作簿(.xlsx)的文件夹。 一半的工作簿有一张名为“ Data ”的工作表,一半工作表中有一张名为“ Changes的工作表。 这两张表都包含相同types的信息,只是标记不同。 没有理由或命令为什么一些被标记的Changes和其他Data

目前,我阅读所有表中的代码

 myfiles <- list() temp = list.files(pattern="*.xls") myfiles = lapply(temp, function(x){as.data.frame(read_excel(x,sheet = "Data"))}) 

但是这只能读取带有Data名称的表单。

我想要做的是这样的:

  myfiles = lapply(temp, function(x){as.data.frame(read_excel(x,sheet = "Changes" || sheet = "Data"))}) 

如果我试图加载所有的工作簿作为一个整体

 myfiles = lapply(temp, function(x){loadworkbook(x)}) 

我得到一个有关超出GC开销限制的错误。

我不确定你能否以这种方式通过一个论点or一个论点。 一种解决方法是读取表单名称,search"data" ,如果存在,请阅读"data"表单,如果没有读取"changes"表单。 在这里,我定义了一个函数read_excel_if来执行单个文件的检查,然后我map这个函数map到你的tempvariables中的所有文件,然后使用bind_rows reduce所有的文件reduce到一个单一的dataframe – 如果你只是想要一个列表dataframes

  library(readxl) library(purrr) library(dplyr) read_excel_if <- function(file_path) { sheets <- excel_sheets(file_path) if ("data" %in% sheets) { df <- read_excel(file_path, sheet = "data") } else { df <- read_excel(file_path, sheet = "changes") } df } temp %>% map(read_excel_if) %>% reduce(bind_rows)