require(openxlsx)
# I wrote a function to read-in all sheets of a excel file
# assuming the excel sheets reflect 1 simple data frame each.
# I hope your excel sheets are very simple and don't need skipping
# data or leaving out some areas etc. Otherwise, you have to modify
# or use plain `read.xlsx` from `openxlsx`.
# This function returns a list of data frames
# (for each sheet 1 data frame)
# the names of the elements of the list being the sheet-titles.
#############################
# read xlsx files to dfs list
#############################
xlsx2df.list <- function(xlsx.path, rowNames = TRUE, colNames = TRUE, ...) {
wb <- loadWorkbook(xlsx.path)
sheetNames <- names(wb)
res <- lapply(sheetNames, function(sheetName) {
read.xlsx(wb, sheet = sheetName, rowNames = rowNames, colNames = colNames, ...)
})
names(res) <- sheetNames
res
}
dfs <- xlsx2df.list("path/to/my_excel.xlsx")
first.sheet.df <- dfs[[1]] # or dfs[["sheet1-title"]]
second.sheet.df <- dfs[[2]] # ...
Я написал это, чтобы не проверять название листа
и, таким образом, какой лист я должен прочитать.
Это одна из наиболее часто используемых функций, которые я использую на работе,
так как биологи, для которых я делаю анализ, люблю листы Excel.
Эта функция экономит ваше время, вызывая функции openxlsx`.
(Вам не нужно учить их, поэтому, если ваши просты
и достаточно регулярно ...).
Примечание: openxlsx
гораздо менее подвержен ошибкам, чем xlsx
, так как он избегает Java. У меня были проблемы с ограничением памяти Java. xlsx -dependent functions got memory errors when the excel files were huge (Gbs).
So: use
openxslx , avoid
xlsx` (Java-зависимость)!