Обновленный ответ с использованием readxl (22 июня 2015 г.)
С момента публикации этого вопроса был выпущен пакет 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')
person
Jeromy Anglim
schedule
18.10.2012
xlconnect
иreadxl
, пакетxlsx
позволяет управлять файлами Excel вR
(все листы или только некоторые) - person Cath   schedule 25.11.2016