【发布时间】:2015-11-25 13:40:51
【问题描述】:
我有一个用于 R 中一些数据分析的脚本,它是许多操作的包装器。其中一些依赖于先前的操作,一些则不依赖于先前的操作。如果某些操作失败,有没有办法简单地继续脚本?
我知道tryCatch,但我不想将每个小命令都包装在tryCatch 块中。我宁愿有一些方法可以简单地忽略每个错误并继续执行脚本。
更新以更清楚地解释我的情况:我有一组数据集,一个用于我实验中的每个样本。我的代码目前采用一个数据集,执行一些操作(例如规范化,排除我不感兴趣的部分等),拟合不同的模型(主要是回归和对数回归)并绘图。
我为每个示例循环此代码。我知道,对于一个特定的样本,并非所有操作都会起作用(特别是如果数据集缺少重要数据),但其中一些总是会起作用(例如在任何操作之前的“香草”数据图)。
我想要的是在运行这个脚本时忽略错误,每次一个操作不起作用时跳到下一行,因为即使对于“坏”数据集我仍然想要一些输出(比如上面提到的“香草”图)。
我知道我可以通过将每个操作包装在 tryCatch 函数中来做到这一点,但我希望有一种更简单(也许更草率)的方式来做到这一点。
【问题讨论】:
-
如果一个部分不依赖于先前的结果,那么为什么要包含它以引入错误?
-
@kristang 也许该行运行模型并引发错误,因为数据不适合此特定模型。用户希望忽略此类情况。 mparada,如果在
error下你读到任何有用的东西,请参阅?options。我个人会采取额外的步骤并为每个“行”实施tryCatch,更改全局设置是......嗯。 :) -
我的意思是,这似乎是一个糟糕的设置,我无法想象您最终会如何陷入这种情况。
-
@RomanLuštrik 我检查了
options(error),但只能找到两种可能性:recover和dump.frames。在两者中我都进入了交互模式,但我想自动跳到下一步。我尝试创建自己的空函数 (skipError() <- function(){}) 并将其分配给options('options(error = skipError)`) 中的error参数,但这也不起作用。 -
那我就没主意了。 :)
标签: r error-handling try-catch