Оновлена відповідь за допомогою readxl (22 червня 2015 р.)
З моменту розміщення цього питання readxlпакет був випущений. Він підтримує як формат, так xlsі xlsxформат. Важливо, що на відміну від інших пакунків імпорту Excel, він працює на Windows, Mac та Linux, не вимагаючи встановлення додаткового програмного забезпечення.
Отже, функцією імпорту всіх аркушів книги Excel буде:
library(readxl)
read_excel_allsheets <- function(filename, tibble = FALSE) {
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) {
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')
xlconnectіreadxl, пакетxlsxдозволяє обробляти файли Excel уR(всі аркуші або лише деякі)