我需要依次运行两个R脚本。我并不是问要并行运行脚本。
每个脚本内部都有一个Stop-if-error逻辑。因此,如果我分别运行它们中的任何一个,则在发生错误时执行将停止。问题是,当我将它们放入这样的包装器代码中时:
source('script1.r', echo=T)
source('script2.r', echo=T)
并且当script1.r
中发生错误时,R将继续执行script2.r
。
在这种情况下如何告诉R完全停止而不继续前进?
答案 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>