6

给定几个.xls具有不同数量表的文件,我正在从包中读取它们以R使用它们。我有两个相关的问题(解决第二个问题应该解决第一个问题): read.xlsgdata

  1. 事先不知道每个文件将有多少张纸.xls,实际上这个值会因文件而异。
  2. 我需要捕获工作表的名称,即相关数据

现在,为了解决 (1),我正在使用try()并迭代工作表编号,直到遇到错误。

如何获取工作表名称的列表以便我可以遍历它们?

4

2 回答 2

9

请参阅 gdata 中的sheetCountsheetNames函数(在同一帮助页面上)。比如说,如果xls <- "a.xls"将电子表格的所有工作表读入一个列表,每个组件一张,就是这样:

sapply(sheetNames(xls), read.xls, xls = xls, simplify = FALSE)

请注意,组件将使用工作表的名称命名。根据内容,删除simplify = FALSE.

于 2013-03-28T11:49:52.997 回答
8

对于此类任务,我使用 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))
于 2013-03-28T11:49:30.790 回答