[R] "try-error" can not be test. Why?

Philippe Grosjean phgrosjean at sciviews.org
Thu Sep 9 05:46:00 CEST 2010


On 08/09/10 19:25, David Winsemius wrote:
>
> On Sep 8, 2010, at 1:18 PM, telm8 wrote:
>
>>
>> Hi,
>>
>> I am having some strange problem with detecting "try-error". From what I
>> have read so far the following statement:
>>
>>
>> try( log("a") ) == "try-error"
>>
>>
>> should yield TRUE, however, it yields FALSE. I can not figure out why.
>> Can
>> someone help?
>>
>
>  > class(try( log("a"), silent=TRUE )) == "try-error"
> [1] TRUE

This is perfectly correct in this case, but while we are mentioning a 
test on the class of an object, the better syntax is:

 > inherits(try(log("a)), "try-error")

In a more general context, class may be defined with multiple strings (R 
way of subclassing S3 objects). For instance, this does not work:

 > if (class(Sys.time()) == "POSIXct") "ok" else "not ok"

... because the class of a `POSIXct' object is defined as: c("POSIXt", 
"POSIXct"). This works:

 > if (inherits(Sys.time(), "POSIXct")) "ok" else "not ok"

Alternate valid tests would be (but a little bit less readable):

 > if (any(class(Sys.time()) == "POSIXct")) "ok" else "not ok"

or, by installing the "operators" package, a less conventional, but 
cleaner code:

 > install.packages("operators")
 > library(operators)
 > if (Sys.time() %of% "POSIXct") "ok" else "not ok"

Best,

Philippe Grosjean

>> Many thanks
>> --
>> View this message in context:
>> http://r.789695.n4.nabble.com/try-error-can-not-be-test-Why-tp2531675p2531675.html
>>
>> Sent from the R help mailing list archive at Nabble.com.
>>
>> ______________________________________________
>> 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.
>
> David Winsemius, MD
> West Hartford, CT
>
> ______________________________________________
> 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