R:在另一个函数中停止一个函数

时间:2014-05-25 15:07:07

标签: r function exit break

我正在处理代码并遇到了一个我无法解决的问题。基本上我的想法是我有一个整体功能,在该功能内有几个其他功能。我的问题是:在其中一个函数中我需要选项在不满足某个条件时停止,但使用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;。有没有办法做到这一点?

提前致谢。

1 个答案:

答案 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