Protect Function Evaluations
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.
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
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.