休息/退出脚本
我有一个程序可以做一些数据分析,并且有几百行。
在程序早期,我想做一些质量控制,如果没有足够的数据,我希望程序终止并返回到R控制台。 否则,我想要执行其余的代码。
我尝试了break
, browser
和quit
并且他们都没有停止执行其他程序(并quit
停止执行以及完全退出R,这不是我想要发生的事情)。 我最后的手段是创建一个if-else
语句如下:
if(n < 500){}
else{*insert rest of program here*}
但这似乎是不好的编码习惯。 我错过了什么吗?
如果您希望程序产生错误,您可以使用stopifnot()
函数:
foo <- function(x) {
stopifnot(x > 500)
# rest of program
}
反转你的if-else结构:
if(n >= 500) {
# do stuff
}
# no need for else
编辑:似乎OP正在运行一个长的脚本,在这种情况下,只需要在质量控制后包装脚本的一部分
if (n >= 500) {
.... long running code here
}
如果抛出一个函数 ,你可能只想显式或隐式地return()
。
例如,明确的双重回报
foo <- function(x) {
if(x < 10) {
return(NA)
} else {
xx <- seq_len(x)
xx <- cumsum(xx)
}
xx ## return(xx) is implied here
}
> foo(5)
[1] 0
> foo(10)
[1] 1 3 6 10 15 21 28 36 45 55
通过隐含return()
,我的意思是最后一行就好像你已经完成了return(xx)
,但是把call改为return()
会稍微高效一些。
有些人认为使用多种返回不良风格; 在长时间的函数中,跟踪函数退出的位置会变得困难或容易出错。 因此,另一种方法是有一个返回点,但使用if () else ()
子句更改返回对象。 对foo()
进行这样的修改foo()
foo <- function(x) {
## out is NA or cumsum(xx) depending on x
out <- if(x < 10) {
NA
} else {
xx <- seq_len(x)
cumsum(xx)
}
out ## return(out) is implied here
}
> foo(5)
[1] NA
> foo(10)
[1] 1 3 6 10 15 21 28 36 45 55
链接地址: http://www.djcxy.com/p/24897.html
上一篇: break/exit script