| restart {base} | R Documentation |
Restart an Expression
Description
restart performs a type of non-local return.
try is a user-friendly wrapper to run an expression that might fail.
Usage
restart(on = TRUE)
try(expr, first = TRUE)
Arguments
on |
if true a jump point is set; if false the jump point is removed |
expr |
an R expression to try |
first |
not for user use! |
Details
When restart is called with on = TRUE the evaluator marks that
function as a return point. Any errors or signals (such as control-C on
Unix) cause control to return to the start of the function containing the
call to restart. The most recently established function is always
entered first.
Value
try returns the value of the expression if it succeeds, and an
invisible object of class "try-error" containing the error
message if it if fails. The normal error handling will print the same
message unless options("show.error.messages") is false.
Note
The direct use of restart is likely to result in an infinite loop.
Use try unless you are sure you know what you are doing.
See Also
options for setting error handlers and suppressing the
printing of error messages;
geterrmessage for retrieving the last error message.
Examples
## this example will not work correctly in example(try), but
## it does work correctly if pasted in
options(show.error.messages = FALSE)
try(log("a"))
print(.Last.value)
options(show.error.messages = TRUE)
## run a simulation, keep only results that worked.
set.seed(123)
x <- rnorm(50)
doit <- function(x)
{
x <- sample(x, replace=TRUE)
if(length(unique(x)) > 30) mean(x)
else stop("too few unique points")
}
options(show.error.messages = FALSE)
## alternative 1
res <- lapply(1:100, function(i) try(doit(x)))
## alternative 2
## Not run: res <- vector("list", 100)
for(i in 1:100) res[[i]] <- try(doit(x))
## End(Not run)
options(show.error.messages = TRUE)
unlist(res[sapply(res, function(x) !inherits(x, "try-error"))])