1

我正在尝试使用 read.xlsx2 函数读取文件夹中的多个 excel 文件。我只需要阅读标题为“退货”或“价格”的特定表格。

有没有一种方法可以在函数中给出“或”参数,如果文件不包含任何表格,也可以跳过文件?

Ps:每个文件都会有一个“退货”或“价格”表,或者两者都没有,但不能同时有,所以不会有冲突。

谢谢

4

1 回答 1

2

您可以读取文件的所有工作表名称并使用intersect选择工作表中存在的一个'Returns''Prices'任何一个,并使用该工作表读取 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)

于 2020-09-24T07:43:27.013 回答