Ric*_*rta 6 xls r vectorization gdata sapply
鉴于几个.xls具有不同页数的文件,我读他们到R使用read.xls从gdata包.我有两个相关的问题(解决第二个问题应解决第一个问题):
.xls文件将有多少张纸,实际上这个值会因文件而异.现在,要解决(1),我正在使用try()并迭代工作表编号,直到我遇到错误.
如何获取工作表名称列表以便我可以迭代它们?
请参阅gdata中的sheetCount和sheetNames函数(在同一帮助页面上).如果xls <- "a.xls",说出来的话阅读电子表格的所有工作表到一个列表,每个组件一张纸,就是这样的:
sapply(sheetNames(xls), read.xls, xls = xls, simplify = FALSE)
Run Code Online (Sandbox Code Playgroud)
请注意,将使用工作表的名称命名组件.根据内容,删除可能有意义simplify = FALSE.
对于这样的任务,我使用库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]))
Run Code Online (Sandbox Code Playgroud)
正如@Martin Studer所建议的,XLConnect函数已经被矢量化,因此不需要使用lapply(),只需提供工作表名称的向量或使用函数getSheets()内部readWorksheet().
dat <- readWorksheet(wb, sheet = getSheets(wb))
Run Code Online (Sandbox Code Playgroud)