首页 > 解决方案 > 如果缺少工作表,则需要跳过循环中的 Read.XLS 多个文件

问题描述

我正在尝试将 Excel 文件批量读入 R,但如果缺少相关工作表名称,我需要 R 跳过并继续循环。

library(xlsx)    
file.list <- list.files(recursive=T,pattern='*.xlsx')  #get files list from folder
for(i in 1:length(file.list))
{
  filename=file.list[i]
  data=read.xlsx(file = filename, sheetName="Income Statement", startColumn=2, startRow=4, header = T)
  assign(x = filename,value = data)
}

我假设我需要在其中添加一个 if else 语句,但我不确定。任何建议表示赞赏!

标签: r

解决方案


这是一个使用 的选项if()

library(xlsx)

file.list <- list.files(pattern = '*.xlsx', recursive = TRUE)

for(i in 1:length(file.list)) {
  filename <- file.list[i]
  sheets <- getSheets(loadWorkbook(filename))
  if("Income Statement" %in% names(sheets)) {
    data <- read.xlsx(file = filename, 
                      sheetName = "Income Statement", 
                      startColumn = 2, 
                      startRow = 4, 
                      header = TRUE)
    assign(x = filename, value = data)
  }
}

reprex 包于 2021-03-03 创建(v1.0.0)


推荐阅读