[R] How to catch an error using try
Steve Lianoglou
mailinglist.honeypot at gmail.com
Mon Aug 3 18:05:43 CEST 2009
Hi,
On Aug 3, 2009, at 11:53 AM, <mauede at alice.it> wrote:
> Sometimes the following function call causes a database exception:
>
>> gene.seq <- getSequence (id=gene.map[,"ensembl_transcript_id"],
>> type="ensembl_transcript_id",
> + seqType="3utr", mart=hmart)
>
> I understand the above function must be called by try to capture the
> eventual error.
> WHat is not clear to me is how to realize that an error has
> occurred. The on-line documentation
> mentions an invisible object of class "try-error".
> How shall I test whetehr such object has been created or not ?
> I assume it is created whenever an error does occur ....?
By "invisible" object, the documentation is saying that it's returning
an object via the "invisible" function (see ?invisible). The object is
no longer invisible if the function is called and the return value is
assigned to a variable: which you are doing in your case.
In your case, you just have to check to see if the object returned by
getSequence is a (or inherits from) the "try-error" class. The last
line of the help in ?try actually shows you how to do that. Here's a
simpler example:
R> m <- matrix(1:100, 10, 10)
R> a <- try(m[,5]) # no error
R> a
[1] 41 42 43 44 45 46 47 48 49 50
R> b <- try(m[,11]) # error here
b
[1] "Error in try(m[, 11]) : subscript out of bounds\n"
attr(,"class")
To programmatically test if b is an error:
R> is(b, 'try-error')
[1] TRUE
R> > inherits(b, 'try-error') # used in last line of ?try
[1] TRUE
-steve
--
Steve Lianoglou
Graduate Student: Computational Systems Biology
| Memorial Sloan-Kettering Cancer Center
| Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact
More information about the R-help
mailing list