我正在处理代码并遇到了一个我无法解决的问题。基本上我的想法是我有一个整体功能,在该功能内有几个其他功能。我的问题是:在其中一个函数中我需要选项在不满足某个条件时停止,但使用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()
我想在这里做的是退出&#34; small
&#34;函数如果x小于3(所以x不打印),但我仍然希望在&#34;之后运行消息&#34;。有没有办法做到这一点?
提前致谢。
答案 0 :(得分:4)
也许您只是在寻找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