在条件内停止执行脚本

时间:2017-12-09 15:57:21

标签: r break

我在脚本test.R中有以下代码:

if (x==2){
  stop("the script ends")
}

现在我来源这个脚本

source(test.R)
t <- 2

我希望代码在x==2时停止,而不会更进一步。但是,它会继续并指定t <- 2。我可以使用函数warnings(options),但我想避免使用此选项并在if中实现条件。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

while循环可以创建一个条件,您可以按照建议逃避:

while (TRUE){
    if (x==2) {
        break
    }
}

这假设您的代码在执行时“一直向左”。多看一点可能会有所帮助,或者更好地了解x的设置或使用方式。请注意,使用while(TRUE)之类的东西可能不是最佳做法,如果您没有正确退出,可能导致无限执行。

答案 1 :(得分:0)

您列出的代码应该按预期工作。

例如,我制作了两个脚本,test.Rtest2.R

1。档案test.R

if (identical(x, 2)) {
  stop("the script ends")
}

(注意:我使用identical(x, 2)作为检查x是否等于2的更安全的方法,但x == 2在此示例中的工作方式相同。)

2。档案test2.R

x <- 1
source("test.R")
t <- 1
print("This should be printed.")

x <- 2
source("test.R")
t <- 2
print("This should not be printed!")

现在我从控制台运行test2.R

> t <- 5
> source('test2.R')
[1] "This should be printed."
 Error in eval(ei, envir) : the script ends 
> t
[1] 1

我们看到检查在x == 1时第一次通过,第二次在x == 2时失败。因此,最后t的值为1,因为第一个赋值已运行而第二个赋值未运行。