[R] tryCatch - Continuing for/next loop after error

Nipesh Bajaj bajaj141003 at gmail.com
Thu Mar 10 16:21:38 CET 2011


Hi Jonathan, I was also trying to understand this tryCatch function on
my own problem. Here is mine:

fn1 <- function(x) {
		if(as.integer(x) == 5) {
				stop("stop")		
			}
		return(x+5)
	}
res <- matrix(NA, 5, 7)
for(i in 1:5) {
		for(j in 1:7) {
				res[i,j] <- tryCatch(fn1(j), error = function() next)
			}
	}

I was expecting while completion of these loops, the 5th column of
'res' will have NA values. However I got some error:

Error in value[[3L]](cond) : unused argument(s) (cond)

What is the actual problem here?

Thanks,


On Thu, Mar 10, 2011 at 7:19 PM, Jonathan P Daily <jdaily at usgs.gov> wrote:
> --------------------------------------
> Jonathan P. Daily
> Technician - USGS Leetown Science Center
> 11649 Leetown Road
> Kearneysville WV, 25430
> (304) 724-4480
> "Is the room still a room when its empty? Does the room,
>  the thing itself have purpose? Or do we, what's the word... imbue it."
>     - Jubal Early, Firefly
>
> r-help-bounces at r-project.org wrote on 03/10/2011 03:51:15 AM:
>
>> [image removed]
>>
>> [R] tryCatch - Continuing for/next loop after error
>>
>> Costas
>>
>> to:
>>
>> r-help
>>
>> 03/10/2011 03:53 AM
>>
>> Sent by:
>>
>> r-help-bounces at r-project.org
>>
>> Please respond to costas.vorlow
>>
>> Dear all,
>>
>> I am not sure I understand fully the functionality of "tryCatch" and
>> "try" commands and how these are used to continue a for/next loop if an
>> error occurs within the loop.
>>
>> Can somebody point me to material (or share some code) with more
>> extensive examples than the ones in the help/FAQ pages?
>>
>> Do explain my problem in more detail:
>>
>> for (i in 100:1000)
>> {
>>       ## do some other stuff
>>
>>      dataset<-head(data,i)
>>      tryCatch(estimatemodel(dataset))
>
> if estimatemodel returns an error (i.e. via a call to stop()), then this
> should break out of the loop:
>
> tryCatch(estimatemodel(dataset), error = function() break)
>
> if you want to skip to the next iteration, use:
> tryCatch(estimatemodel(dataset), error = function() next)
>
>>
>> }
>>
>> My for/next loop reads in data (increasing the dataset by one point at
>> every loop run) and then estimates a model. When the problem is
>> computationally singular, the loop exits. I want to continue the loop
>> and register an "error" estimation value for that step. However when I
>> use use the try tryCatch(estimatemodel(data)) (where estimatemodel() is
>> a wrapper function calling the model estimation and optimization
>> routines), the problem still persists.
>>
>> Is this the correct way to use tryCatch (or try) or should these go
>> inside the actual code bits (i.e., in a more low level fashion) that
>> conduct the optimization and model estimation?
>>
>> Apologies if this is not clear enough.
>>
>> Best,
>> Costas
>>
>> ______________________________________________
>> 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.
>
> ______________________________________________
> 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.
>



More information about the R-help mailing list