检查R中是否存在数据表

我有一个shiny的应用程序,用户可以上传一个文件。 根据这个文件是否有1或2个数据表,function应该是不同的。 我使用read.xlsx导入数据表,其中data_in是path:

data <-read.xlsx(data_in,1,1,colNames=TRUE) 

所以这是文件的第一张表格。 第二张纸可以用相同的方式input。 但是如果它没有第二张纸,我希望它通过粘贴警告或以不同方式继续处理。

那么,如何确定数据文件中是否存在第二个工作表?

感谢你的帮助!

谢谢

上面的答案很好地指出了解决您的具体问题。 我只是想为这些问题添加一个通用的解决scheme:你可以看看tryCatch() 。 这使您可以定义在代码中发生错误或警告时应该发生的情况。

 result <- tryCatch({ # The code you want run }, warning = function(war) { # Is executed if warning encountered }, error = function(err) { # Is executed if error encountered }) 

在你的例子中,你可以尝试阅读第二个工作表,并定义如果抛出错误应该发生什么。

有一个方法existsSheet检查XLConnect包中的Excel文件中是否存在工作表。

你可以试试以下内容:

 # mtcars xlsx file from demoFiles subfolder of package XLConnect demoExcelFile <- system.file("demoFiles/mtcars.xlsx", package = "XLConnect") # Load workbook wb <- loadWorkbook(demoExcelFile) # Check for existence of a worksheet called 'mtcars' existsSheet(wb, "mtcars") 

请参阅这个更多细节:

您可以使用readxl软件包的excel_sheetsfunction来“列出excel电子表格中的所有工作表”。

 library(readxl) excel_sheets("path/to/excel/file") 

从文档:

 # To load all sheets in a workbook, use lapply path <- system.file("extdata/datasets.xls", package = "readxl") lapply(excel_sheets(path), read_excel, path = path)