2016-08-04 29 views
2

我有超過100個excel文件,每個文件有50張。我試圖從每個文件中讀取一張紙。我想要讀取的表單的位置和名稱因文件而異。但是,每個文件中的工作表名稱(我試圖讀取)總是包含單詞「驗證」。所以,我試圖從100個文件中讀取包含驗證字的工作表。這需要我使用正則表達式(如「grepl」來選擇包含單詞「validate」的工作表)。我想知道這是否可能。據我所知,read_excel和xlsx包不允許這樣做。我想是以下幾點:使用正則表達式在excel表名中的r

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

也許http://stackoverflow.com/q/17944777抓取表名稱;找出每個文件需要哪一個;然後再掃描一遍以閱讀它們。 – Frank

+0

感謝@Frank的鏈接。 – user227710

回答

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