我正在遍历read_xlsx(来自readxl库)以读取Excel中的多个工作表。但是,如果存在不存在该工作表(在以下示例中指定为特定名称-“缺失”)的错误,我希望将其忽略,并且循环应继续进行。但是同时,如果还有其他错误(例如与计算有关的错误),则在停止循环时不应忽略该错误并将其作为错误抛出。该怎么做?
注意:我使用了tryCatch / try;他们都忽略所有类型的错误(从this答案中学习)。
sheets=c("name1","name2","missing","name3")
for (k in sheets) {
tryCatch({temp=read_xlsx("someexcel.xlsx",sheet = k,col_names = F)
some_calc=mean(temp[1,])},error=function(e){})
}
答案 0 :(得分:1)
您可以尝试以下方法:
test <- function(x) {
tryCatch(x,
error = function(e) {if(conditionMessage(e) == "It's an error") {print("no problem")
} else {
stop("It's another error")}
})
}
> test(stop("It's an error"))
[1] "no problem"
> test(stop("Mayday mayday"))
Error in value[[3L]](cond) : It's another error
conditionMessage
捕获了错误消息,因此您可以对其进行评估并采取相应措施。
要使其不执行任何操作,只需在条件为真时“不执行任何操作” {}
。