readxl を使用して回答を更新しました (2015 年 6 月 22 日)
この質問を投稿してから、readxl
パッケージがリリースされました。xls
とxlsx
フォーマットの両方をサポートしています。重要なのは、他の Excel インポート パッケージとは対照的に、追加のソフトウェアをインストールする必要なく、Windows、Mac、および Linux で動作することです。
したがって、Excel ワークブックのすべてのシートをインポートする関数は次のようになります。
library(readxl)
read_excel_allsheets <- function(filename, tibble = FALSE) {
# I prefer straight data.frames
# but if you like tidyverse tibbles (the default with read_excel)
# then just pass tibble = TRUE
sheets <- readxl::excel_sheets(filename)
x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X))
if(!tibble) x <- lapply(x, as.data.frame)
names(x) <- sheets
x
}
これは次のように呼び出すことができます:
mysheets <- read_excel_allsheets("foo.xls")
古い回答
@mnel から提供された回答に基づいて、Excel ファイルを引数として取り、各シートを名前付きリストの data.frame として返す単純な関数を次に示します。
library(XLConnect)
importWorksheets <- function(filename) {
# filename: name of Excel file
workbook <- loadWorkbook(filename)
sheet_names <- getSheets(workbook)
names(sheet_names) <- sheet_names
sheet_list <- lapply(sheet_names, function(.sheet){
readWorksheet(object=workbook, .sheet)})
}
したがって、次のように呼び出すことができます。
importWorksheets('test.xls')