我在脚本test.R
中有以下代码:
if (x==2){
stop("the script ends")
}
现在我来源这个脚本
source(test.R)
t <- 2
我希望代码在x==2
时停止,而不会更进一步。但是,它会继续并指定t <- 2
。我可以使用函数warnings(options)
,但我想避免使用此选项并在if
中实现条件。有什么建议吗?
答案 0 :(得分:0)
while循环可以创建一个条件,您可以按照建议逃避:
while (TRUE){
if (x==2) {
break
}
}
这假设您的代码在执行时“一直向左”。多看一点可能会有所帮助,或者更好地了解x的设置或使用方式。请注意,使用while(TRUE)之类的东西可能不是最佳做法,如果您没有正确退出,可能导致无限执行。
答案 1 :(得分:0)
您列出的代码应该按预期工作。
例如,我制作了两个脚本,test.R
和test2.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,因为第一个赋值已运行而第二个赋值未运行。