encapsulate {mlr3misc} | R Documentation |
Encapsulate Function Calls for Logging
Description
Evaluates a function while both recording an output log and measuring the elapsed time. There are currently three different modes implemented to encapsulate a function call:
-
"none"
: Just runs the call in the current session and measures the elapsed time. Does not keep a log, output is printed directly to the console. Works well together withtraceback()
. -
"try"
: Similar to"none"
, but catches error. Output is printed to the console and not logged. -
"evaluate"
: Uses the package evaluate to call the function, measure time and do the logging. -
"callr"
: Uses the package callr to call the function, measure time and do the logging. This encapsulation spawns a separate R session in which the function is called. While this comes with a considerable overhead, it also guards your session from being teared down by segfaults.
Usage
encapsulate(
method,
.f,
.args = list(),
.opts = list(),
.pkgs = character(),
.seed = NA_integer_,
.timeout = Inf
)
Arguments
method |
( |
.f |
( |
.args |
( |
.opts |
(named |
.pkgs |
( |
.seed |
( |
.timeout |
( |
Value
(named list()
) with three fields:
-
"result"
: the return value of.f
-
"elapsed"
: elapsed time in seconds. Measured asproc.time()
difference before/after the function call. -
"log"
:data.table()
with columns"class"
(ordered factor with levels"output"
,"warning"
and"error"
) and"message"
(character()
).
Examples
f = function(n) {
message("hi from f")
if (n > 5) {
stop("n must be <= 5")
}
runif(n)
}
encapsulate("none", f, list(n = 1), .seed = 1)
if (requireNamespace("evaluate", quietly = TRUE)) {
encapsulate("evaluate", f, list(n = 1), .seed = 1)
}
if (requireNamespace("callr", quietly = TRUE)) {
encapsulate("callr", f, list(n = 1), .seed = 1)
}