Использовать регулярное выражение в именах листов Excel

У меня более 100 файлов Excel, каждый по 50 листов. Я пытаюсь прочитать по одному листу из каждого файла. Местоположение и имя листа, который я пытаюсь прочитать, различаются в каждом файле.

Однако имя листа (который я пытаюсь прочитать) в каждом файле всегда содержит слово «проверить». Итак, я пытаюсь прочитать лист, содержащий слово «проверка» из 100 файлов. Это требует, чтобы я использовал регулярное выражение (например, «grepl», чтобы выбрать лист, содержащий слово «проверить»). Я хочу знать, возможно ли это.

Насколько мне известно, пакеты read_excel и xlsx не позволяют этого. Я хочу что-то вроде следующего:

library(xlsx2)

files<-paste0("file",1:100)

lapply(files, function(i){
          read.xlsx2(
            paste0(i,".xlsx"), sheetName = grep("validate", ??,value=TRUE))})

person user227710    schedule 04.08.2016    source источник
comment
Может быть, stackoverflow.com/q/17944777 Возьмите имена листов; выяснить, какой из них вам нужен для каждого файла; затем пролистайте второй раз, чтобы прочитать их.   -  person Frank    schedule 04.08.2016
comment
Спасибо @Frank за ссылку.   -  person user227710    schedule 04.08.2016


Ответы (1)


Я обнаружил, что readxl намного проще для этого типа задач:

Сначала я сделал несколько поддельных данных в файле Excel, затем проверил имена и прочитал на интересующих вкладках:

sheets <- readxl::excel_sheets("test_38757844.xlsx")

for(x in sheets[grepl("validate", sheets) == T]){
  print(x)
  validate_x <- readxl::read_excel("test_38757844.xlsx", x)
  print(head(validate_x))
}
[1] "validate1"
  1   A
1 2  AA
2 3 Sas
3 4 SAS
4 4 GDD
5 5 ASD
6 6 asd
[1] "validate2"
  1 a
1 2 s
2 3 s
3 4 d
4 5 d
5 6 f
6 7 g
person Stedy    schedule 19.12.2016