4

我有 100 多个 excel 文件,每个文件有 50 张。我正在尝试从每个文件中读取一张。我尝试读取的工作表的位置和名称因每个文件而异。

但是,每个文件中的工作表名称(我正在尝试读取)始终包含“验证”一词。所以,我试图从 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))})
4

1 回答 1

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
于 2016-12-19T18:49:29.037 回答