给定几个.xls
具有不同数量表的文件,我正在从包中读取它们以R
使用它们。我有两个相关的问题(解决第二个问题应该解决第一个问题): read.xls
gdata
- 事先不知道每个文件将有多少张纸
.xls
,实际上这个值会因文件而异。 - 我需要捕获工作表的名称,即相关数据
现在,为了解决 (1),我正在使用try()
并迭代工作表编号,直到遇到错误。
如何获取工作表名称的列表以便我可以遍历它们?
给定几个.xls
具有不同数量表的文件,我正在从包中读取它们以R
使用它们。我有两个相关的问题(解决第二个问题应该解决第一个问题): read.xls
gdata
.xls
,实际上这个值会因文件而异。现在,为了解决 (1),我正在使用try()
并迭代工作表编号,直到遇到错误。
如何获取工作表名称的列表以便我可以遍历它们?
请参阅 gdata 中的sheetCount和sheetNames
函数(在同一帮助页面上)。比如说,如果xls <- "a.xls"
将电子表格的所有工作表读入一个列表,每个组件一张,就是这样:
sapply(sheetNames(xls), read.xls, xls = xls, simplify = FALSE)
请注意,组件将使用工作表的名称命名。根据内容,删除simplify = FALSE
.
对于此类任务,我使用 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))