Description Usage Arguments Details Value Examples
Add a time limit for R expressions
1 2 3 4 5 6 7 | timeout(
expr,
time_out = 1,
on_timeout = { stop("Timout reached", call. = FALSE) },
on_final = { },
env = parent.frame()
)
|
expr |
expressions, wrap them inside |
time_out |
numeric, timeout time, in seconds |
on_timeout |
expressions, callback expressions to run it the time out limit is reached but expression is still running. Default is to return an error. |
on_final |
expressions, callback expressions to run in the end regardless the state and results |
env |
environment, which environment to evaluate the expressions. Default is
the same environment as where the |
Expressions will be evaluated in the parent environment by default, for example
if this function is called at global level, all returns, assignments inside
expr
will directly go to global environment as well.
default return, all depends on what return the expr
will have
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # The `try` command in following examples are here to make sure the
# R CMD check will pass on package check. In a real case, you do not
# need it.
# default
try(timeout({Sys.sleep(0.1)}, time_out = 0.01))
# timeout is evaluating expressions the same level as you call it
timeout({abc <- 123})
# so you should get `abc` even outside the function call
abc
# custom timeout callback
timeout({Sys.sleep(0.1)}, time_out = 0.01, on_timeout = {print("It takes too long")})
# final call back
try(timeout({Sys.sleep(0.1)}, time_out = 0.01, on_final = {print("some final words")})) # on error
timeout({123}, on_final = {print("runs even success")}) # on success
# assign to value
my_val <- timeout({10 + 1})
my_val
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.