protect | R Documentation |
Ensures non-failure and possibly finite-ness of a function evaluation.
protect(f, fail.value.default=NULL)
invert(f)
f |
A function. |
fail.value.default |
Value that will be used as on failure of
|
protect
returns a function with arguments
g(..., fail.value=fail.value.default, finite=NULL)
The ...
arguments are all passed through to the underlying
function f
, fail.value
contains the value to return in
the event of a failure (e.g., an error occuring). If finite
is
TRUE
, then fail.value
is also returned where the value
is NA
, NaN
or infinite.
Some functions, such as optim
with method
L-BFGS-B
(and therefore find.mle
), require that
every value is finite. Optimisation with these functions also
requires that the target functions to not generate errors.
protect
catches these issues, returning the value of
fail.value
instead.
No check is made that f
returns a single value, but it should.
Richard G. FitzJohn
f <- function(x) log(x)
g <- protect(f)
f(0) # -Inf
g(0, fail.value=-999) # -999
f <- function(x) {
if ( x < 1 )
stop("dummmy error")
x
}
g <- protect(f)
## Not run:
f(0) # error
## End(Not run)
g(0, fail.value=-999) # -999
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.