6

シート数が異なるいくつかのファイルが与えられたので、それらをパッケージから使用.xlsするように読み込んでいます。関連する 2 つの問題があります (2 番目の問題を解決すると、最初の問題も解決するはずです)。 Rread.xlsgdata

  1. 各ファイルのシート数は事前に不明.xlsであり、実際、この値はファイルごとに異なります。
  2. 関連データであるシートの名前を取得する必要があります

現在、(1)を解決するためにtry()、エラーが発生するまでシート番号を使用して繰り返し処理しています。

シートの名前のリストを取得して、それらを反復できるようにするにはどうすればよいですか?

4

2 に答える 2

9

gdataのsheetCountsheetNames関数 (同じヘルプ ページ) を参照してください。たとえばxls <- "a.xls"、スプレッドシートのすべてのシートをコンポーネントごとに 1 シートずつリストに読み込むと、次のようになります。

sapply(sheetNames(xls), read.xls, xls = xls, simplify = FALSE)

コンポーネントには、シートの名前を使用して名前が付けられることに注意してください。コンテンツによっては、削除するのが理にかなっている場合がありsimplify = FALSEます。

于 2013-03-28T11:49:52.997 に答える
8

そのようなタスクには、 library を使用しますXLConnect。その関数を使用すると、ベクトル内の各シートの名前を取得し、そのベクトルの長さを決定できます。

#Read your workbook 
wb<-loadWorkbook("Your_workbook.xls")

#Save each sheet's name as a vector
lp<-getSheets(wb)

#Now read each sheet as separate list element
dat<-lapply(seq_along(lp),function(i) readWorksheet(wb,sheet=lp[i]))

アップデート

@Martin Studer で示唆されているように、XLConnect 関数は既にベクトル化されているため、使用する必要はありませんlapply()。代わりに、シート名のベクトルを指定するか、getSheets()内部で関数を使用しますreadWorksheet()

dat <- readWorksheet(wb, sheet = getSheets(wb))
于 2013-03-28T11:49:30.790 に答える