编辑:似乎 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)
,但不调用return()
.
有些人考虑使用多重回报不好的风格;在长函数中,跟踪函数退出的位置可能变得困难或容易出错。因此,另一种方法是使用单个返回点,但使用if () else ()
子句更改返回对象。这样的修改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