阅读.xlsx2 |如果 sheetName 不存在则跳过

read.xlsx2 | Skipping if sheetName does not exist

我正在尝试使用 read.xlsx2 函数读取文件夹中的多个 excel 文件。我只需要阅读标题为 'Returns' 或 'Prices'.

的特定 sheet

有没有一种方法可以在函数中给出一个 'OR' 参数,并且如果文件不包含任何 sheet 也可以跳过该文件?

P.s.: 每个文件将有 'Returns' 或 'Prices' sheet 或两者都没有,但不能同时有,所以不会有冲突。

谢谢

您可以读取文件的所有 sheet 名称,并使用 intersect select 'Returns''Prices' 之一,以存在于 sheet 并使用 sheet.

读取 excel 文件

使用 readxl 你可以这样做:

library(readxl)

all_files <- list.files(pattern = '\.xlsx$')

result <- lapply(all_files, function(x) {
  all_sheets <- excel_sheets(x)  
  correct_sheet <- intersect(all_sheets, c('Returns', 'Prices'))
  if(length(correct_sheet)) read_xlsx(x, correct_sheet)
})

result 将有一个数据帧列表。如果你想将数据合并到一个数据框中,并且它们具有相同的列名,你可以使用 do.call(rbind, result)