在R

时间:2019-01-31 11:59:34

标签: r error-handling

我需要依次运行两个R脚本。我并不是问要并行运行脚本。

每个脚本内部都有一个Stop-if-error逻辑。因此,如果我分别运行它们中的任何一个,则在发生错误时执行将停止。问题是,当我将它们放入这样的包装器代码中时:

source('script1.r', echo=T)
source('script2.r', echo=T)

并且当script1.r中发生错误时,R将继续执行script2.r

在这种情况下如何告诉R完全停止而不继续前进?

2 个答案:

答案 0 :(得分:1)

我将把代码包装在函数中的两个脚本中,提供脚本源,然后在主文件中调用函数。如果一个功能失败,脚本应停止。

(这可能取决于您执行脚本的方式,例如,如果您在Rstudio中选择代码并由CMD + Enter运行,则会在出现错误后继续运行。)

答案 1 :(得分:0)

您可以使用try()做一些事情。我在script1.R中添加了以下内容:

stop("Stop")

script2.R中,我有

print("A")

然后从“主脚本”中调用

x <- try(source("script1.R", echo = TRUE))
#> 
#> > stop("Stop")
if ( !inherits(x, "try-error") ) {
    source("script2.R", echo = TRUE)
}

reprex package(v0.2.1)于2019-01-31创建

如果调用了stop()部分(或发生任何错误),则x将属于try-error类,并且不会执行第二个source()调用。 / p>