[R] inconsistency in tryCatch...

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Thu Jun 23 01:39:41 CEST 2022


Hello,

You don't need function() at all.
Unless you want a function to be called later, this also prints "fred":


tryCatch(print("fred"), error = function(e) sum(1:3), finally = sum(1:3))
#[1] "fred"


tryCatch's first argument name is 'expr'. In this case the expression is 
print("fred"), the code Jeff mentions and that you believe might break. 
Wrap tryCatch around it to prevent your code to stop running, for 
instance, when reading files in a loop or in a long simulation. The 
error is trapped and the code continues to the next instruction or loop 
iteration.

Or do you need the function, something along the following lines?


f <- tryCatch(function() print("fred"),  error = function(e) sum(1:3), 
finally = sum(1:3))

f()
#[1] "fred"


Hope this helps,

Rui Barradas

Às 21:08 de 22/06/2022, akshay kulkarni escreveu:
> dear Jeff,
>                 Thanks a lot for the informative reply....
> 
> Yours sinecrely,
> AKSHAY M KULKARNI
> ________________________________
> From: Jeff Newmiller <jdnewmil using dcn.davis.ca.us>
> Sent: Thursday, June 23, 2022 1:25 AM
> To: akshay kulkarni <akshay_e4 using hotmail.com>; r-help using r-project.org <r-help using r-project.org>
> Subject: Re: [R] inconsistency in tryCatch...
> 
> I don't think it is at all idiosyncratic... tryCatch doesn't expect the first argument to be a function... it is supposed to be the actual code that might break and raise an error.
> 
> There are lots of functions (like lapply) that do expect you to provide a function, and even the other parameters to tryCatch expect a function, but you would not write a for loop and have a function definition in the body of the loop and expect the for loop to know it was supposed to call that function, would you? Think of tryCatch like a for loop or an if statement.
> 
> On June 22, 2022 12:36:27 PM PDT, akshay kulkarni <akshay_e4 using hotmail.com> wrote:
>> Dear Jeff,
>>                Thanks! I think it is an idiosyncrasy of tryCatch? The other arguments like "error" doesn't need to be assigned to a call right? Just the definition would be sufficient, i think?
>>
>> Yours sincerely,
>> AKSHAY M KULKARNI
>> ________________________________
>> From: Jeff Newmiller <jdnewmil using dcn.davis.ca.us>
>> Sent: Thursday, June 23, 2022 12:53 AM
>> To: r-help using r-project.org <r-help using r-project.org>; akshay kulkarni <akshay_e4 using hotmail.com>; R help Mailing list <r-help using r-project.org>
>> Subject: Re: [R] inconsistency in tryCatch...
>>
>> You defined a function. You did not call the function. tryCatch returned the object you defined. So the interactive console printed the object returned.
>>
>> Invoking the "function" function does not call the defined function for you. Try:
>>
>> tryCatch((function() print("fred"))(), error = function(e) sum(1:3), finally = sum(1:3))
>>
>> On June 22, 2022 12:00:38 PM PDT, akshay kulkarni <akshay_e4 using hotmail.com> wrote:
>>> Dear members,
>>>                           I have the following code:
>>>
>>>         > tryCatch(function() print("fred"),  error = function(e) sum(1:3), finally = sum(1:3))
>>>          function() print("fred")
>>>
>>> The expected output from the tryCatch call should be to print "fred" to the console, and exit, but as seen above, it is outputting
>>>           function() print("fred")
>>>
>>> Can you people please shed some light on what is happening?
>>>
>>> thanking you,
>>> Yours sincerely,
>>> AKSHAY M KULKARNI
>>>
>>>        [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> 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.
>>
>> --
>> Sent from my phone. Please excuse my brevity.
> 
> --
> Sent from my phone. Please excuse my brevity.
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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