[R] How to say "if error"

Joris Meys jorismeys at gmail.com
Thu Jun 24 15:49:24 CEST 2010


An old-fashioned and I guess also advised-against method would be to
use try() itself, eg :

set.seed(1)
x <- rnorm(1:10)
y <- letters[1:10]
z <- rnorm(1:10)

for (i in list(x,y,z)){
  cc <- try(sum(i), silent=T)
  if(is(cc,"try-error")) {next}
  print(cc)
}

Put silent=F if you want to see the error methods. See also ?try (and ?is )
Cheers
Joris

On Thu, Jun 24, 2010 at 3:34 PM, Duncan Murdoch
<murdoch.duncan at gmail.com> wrote:
> On 24/06/2010 7:06 AM, Paul Chatfield wrote:
>>
>> I've had a look at the conditions in base and I can't get the ones to work
>> I've looked at but it is all new to me.
>> For example, I can work the examples for tryCatch, but it won't print a
>> finally message for me when I apply it to my model.  Even if I could get
>> this to work, I think it would still cause a break e.g.
>> for (j in 1:10)
>> {tryCatch(ifelse(j==5, stop(j), j), finally=print("oh dear"))}
>>
>> Thanks for the suggestion though - any others?
>>
>
> I think you don't want to use finally, which is just code that's guaranteed
> to be executed at the end.  You want to catch the errors and continue.  For
> example,
>
> for (j in 1:10)
> { tryCatch(ifelse(j==5, stop(j), print(j)), error=function(e) {print("caught
> error"); print(e)}) }
>
> Duncan Murdoch
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Joris Meys
Statistical consultant

Ghent University
Faculty of Bioscience Engineering
Department of Applied mathematics, biometrics and process control

tel : +32 9 264 59 87
Joris.Meys at Ugent.be
-------------------------------
Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php



More information about the R-help mailing list