在R中定义“安全应用”功能

时间:2019-01-25 13:14:38

标签: python r function gradient-descent

在Scratch的Joel Grus的Data Science的Gradescent Descent一章中,他定义了一个“安全应用”函数,该函数以一个函数(称为f)作为参数,并返回一个新函数,该函数与f拥有相同的args,并在未引发错误时返回f(args),而在f(args)引发错误时返回Infinity。

他在Python中的代码是

def safe(f):
   """return a new function that's the same as f,
   except that it outputs infinity whenever f produces an error"""
   def safe_f(*args, **kwargs):
      try:
         return f(*args, **kwargs)
      except:
         return float('inf') # this means "infinity" in Python
   return safe_f

他使用此函数重新指定名为target_fn的现有函数,以便该函数在遇到错误时将返回Infinity

target_fn = safe(target_fn)

我们如何在R中定义类似的安全功能?

编辑:

使用tryCatch定义这样的功能:

safe <- function(f){
    safeF <- function(...){
        out <- tryCatch(
            {f(...)},
            error = function(errorMessage){
                return(Inf)
            }
        )
        return(out)
    }
    return(safeF)
}

新函数为所有输入返回一个Inf。

0 个答案:

没有答案