1

我的代码中有一个预定义filename的。如果文件存在,我希望加载该文件,如果不存在,我希望创建一个新工作簿。我正在尝试使用以下代码tryCatch和包来执行此操作:openxlsx

tryCatch({wb <- loadWorkbook(fileName)}, error=function(e){wb <- createWorkbook()})
*some processing*
saveWorkbook(wb, fileName, overwrite = TRUE)

我的 tryCatch 似乎没有运行任何一个命令。当我单独运行 loadWorkbook 时,它会引发错误“文件不存在”,但是当我运行 tryCatch 时,它不会创建新工作簿。我是否以错误的方式使用 tryCatch?

4

2 回答 2

0

我相信 TryCath 是正确的,但在保存工作簿之前,您需要创建至少一张工作表。尝试这个:

wb <- tryCatch(loadWorkbook(fileName), 
               error = function(e){wb <- createWorkbook(); createSheet(wb, sheetName="Sheet1"); wb})
于 2018-08-02T07:40:26.773 回答
-1

发现问题。
由于错误部分是一个函数,因此 wb 是在函数中本地创建的。我只需要按照 Juan 的建议通过在 tryCatch 之外分配它来从函数中返回 wb 。

wb <- tryCatch({loadWorkbook(fileName)}, error=function(e){createWorkbook()})
*some processing*
saveWorkbook(wb, fileName, overwrite = TRUE)
于 2018-08-02T08:04:57.713 回答