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 at dcn.davis.ca.us>
> Sent: Thursday, June 23, 2022 1:25 AM
> To: akshay kulkarni <akshay_e4 at hotmail.com>; r-help at
r-project.org <r-help at 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 at
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 at dcn.davis.ca.us>
>> Sent: Thursday, June 23, 2022 12:53 AM
>> To: r-help at r-project.org <r-help at r-project.org>; akshay
kulkarni <akshay_e4 at hotmail.com>; R help Mailing list <r-help at
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 at
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 at 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 at 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.