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.