我正在编写代码,遇到了一个问题,我似乎无法修复。基本的想法是,我有一个整体的功能,在这个功能中有几个其他的功能。我的问题是:在其中一个函数中,如果不满足某个条件,我需要选择停止,但是使用if(…){stop}的stopifnot()也会停止整个函数。有没有一种方法可以让我在不停止整个函数的情况下停止特定函数的运行?
例如:
full=function(){
message("before")
x=2
small=function(x){
if (x<3){stop("smaller than 3")
print(x)
}
}
small(x)
message("after")
}
full()
这里我想做的是退出"small
"函数,如果x小于3(所以x不打印),但我仍然想运行消息"after"。有办法做到吗?
提前感谢。
也许您只是在寻找return()
函数。否则,尝试错误处理工具:
full <- function() {
message("before")
small <- function(x){
if (x<3) {
# or just e.g. return(NULL)
stop("smaller than 3")
}
print(x)
}
tryCatch({
small(2)
}, error=function(err) {
# do nothing on error
})
message("after")
}
full()
## before
## after