4

100 以上の Excel ファイルがあり、それぞれに 50 枚のシートがあります。各ファイルから 1 枚のシートを読み取ろうとしています。読み取ろうとしているシートの場所と名前は、ファイルごとに異なります。

ただし、各ファイルのシート (私が読み取ろうとしている) の名前には、常に「検証」という単語が含まれています。そのため、validate という単語を含むシートを 100 個のファイルから読み込もうとしています。これには、正規表現を使用する必要があります (「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 に答える