【问题标题】:R: stop a function within another functionR:在另一个函数中停止一个函数
【发布时间】:2014-07-14 10:24:51
【问题描述】:

我正在编写代码并遇到了一个我似乎无法解决的问题。基本上我的想法是我有一个整体功能,并且在该功能中还有其他几个功能。我的问题是:在其中一个函数中,如果不满足某个条件,我需要选择停止,但是使用 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()

如果 x 小于 3(因此不打印 x),我在这里要做的是退出“small”函数,但我仍然想在“之后”运行消息。有没有办法做到这一点?

提前致谢。

【问题讨论】:

    标签: r function exit break


    【解决方案1】:

    也许您只是在寻找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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多