try package:base R Documentation _T_r_y _a_n _E_x_p_r_e_s_s_i_o_n _A_l_l_o_w_i_n_g _E_r_r_o_r _R_e_c_o_v_e_r_y _D_e_s_c_r_i_p_t_i_o_n: 'try' is a wrapper to run an expression that might fail and allow the user's code to handle error-recovery. _U_s_a_g_e: try(expr, silent = FALSE) _A_r_g_u_m_e_n_t_s: expr: an R expression to try. silent: logical: should the report of error messages be suppressed? _D_e_t_a_i_l_s: 'try' evaluates an expression and traps any errors that occur during the evaluation. 'try' establishes a handler for errors that uses the default error handling protocol. It also establishes a 'tryRestart' restart that can be used by 'invokeRestart'. _V_a_l_u_e: The value of the expression if 'expr' is evaluated without error, but an invisible object of class '"try-error"' containing the error message if it fails. The normal error handling will print the same message unless 'options("show.error.messages")' is false or the call includes 'silent = TRUE'. _S_e_e _A_l_s_o: 'options' for setting error handlers and suppressing the printing of error messages; 'geterrmessage' for retrieving the last error message. 'tryCatch' provides another means of catching and handling errors. _E_x_a_m_p_l_e_s: ## 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) ## alternatively, print(try(log("a"), TRUE)) ## run a simulation, keep only the 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") } ## alternative 1 res <- lapply(1:100, function(i) try(doit(x), TRUE)) ## alternative 2 ## Not run: res <- vector("list", 100) for(i in 1:100) res[[i]] <- try(doit(x), TRUE) ## End(Not run) unlist(res[sapply(res, function(x) !inherits(x, "try-error"))])