r - 遇到错误时,从列表中删除文件名

标签 r error-handling try-catch

我有这个代码

library(plyr)
library(readxl)
library(XLConnect)

#Set the Path
layout_path <- "/rdrive/my_test/"
output_path <- "/rdrive/my_test/"

filenames <- list.files(path = layout_path , pattern="*xls", ignore.case=TRUE)
filecount <- length(list.files(path = layout_path, pattern="*xls", ignore.case=TRUE))

err_fs =
  for (f in filenames) {
    tryCatch(
      {
      nverr <- read_excel(paste(layout_path,f,sep=''), sheet = 1, col_names = FALSE, range = cell_cols("A:A"))
      },
      error=function(err) {
        filenames[names(filenames) != f]    
        cat("File doesn't appear to open:", f, conditionMessage(err), "\n")
      })
  }
尽管其他所有内容似乎都正常运行,但filenames [names(filenames)!= f]无法从列表“filenames”中删除错误的文件名。
我什至尝试了数字方法,但总的来说..可能是因为它在错误函数中吗?
如果您能提出建议,请多加赞赏。

最佳答案

您可以创建一个 vector 来存储结果,如果文件正确读取,则将其转换为"success",如果出现错误,它将保持空白。

file_read <- character(length(filenames))

for (i in seq_along(filenames)) {
  tryCatch(
    {
      nverr <- read_excel(paste(layout_path,filenames[i],sep=''), sheet = 1, col_names = FALSE, range = cell_cols("A:A"))
      file_read[i] <- 'success'
    },
    error=function(err) {
      cat("File doesn't appear to open:", f, conditionMessage(err), "\n")
    })
}
然后,您可以删除不成功的文件。
newfilenames <- filenames[file_read != 'success']

关于r - 遇到错误时,从列表中删除文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63590571/

相关文章:

php - Laravel Artisan在Table Seeders上给出了解析错误

PHP MySQLi 错误处理 1062 重复键输入

java - 如何处理java代码的错误

error-handling - SQL Try-Catch block 可以处理抛出的 CLR 错误吗?

android.provider.Settings.Secure.ANDROID_ID 错误处理

从 ggplot 中删除 y 标签

r - read.table和read.delim函数之间的区别

java - read.xlsx() 在 R 中抛出错误

C++,忽略异常并继续代码?

r - 在 R data.frame 上有效组合多个条件