在r中使用excel的工作表名称中的正则表达式

时间:2016-08-04 03:04:08

标签: r xlsx readxl

我有超过100个excel文件,每个文件有50张。我试图从每个文件中读取一张纸。我尝试阅读的工作表的位置和名称在每个文件中都有所不同。但是,每个文件中的工作表名称(我试图阅读)始终包含单词“validate”。所以,我试图从100个文件中读取包含单词validate的表单。这要求我使用正则表达式(如“grepl”来选择包含单词“validate”的表格)。我想知道这是否可行。据我所知,read_excel和xlsx包不允许这样做。我想要以下内容:

library(xlsx2)
files<-paste0("file",1:100)
lapply(files, function(i){
          read.xlsx2(
            paste0(i,".xlsx"),sheetName=grep("validate", ??,value=TRUE))})

1 个答案:

答案 0 :(得分:0)

我发现这类任务更容易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