[R] How to check for existence url from within a function?
Martin Maechler
maechler at stat.math.ethz.ch
Wed May 30 17:12:10 CEST 2007
>>>>> "Duncan" == Duncan Murdoch <murdoch at stats.uwo.ca>
>>>>> on Sat, 26 May 2007 08:02:11 -0400 writes:
Duncan> On 26/05/2007 7:13 AM, Heinz Tuechler wrote:
>> Dear All,
>>
>> To check if an url exists, I can use try(). This works, as I expected, if I
>> do it directly, as in the first part of the following example, but I could
[..........]
Duncan> .Last.value isn't set until your function returns. You should write this as
Duncan> con.url <- try(url(url.string, open='rb'))
Duncan> try.error <- inherits(con.url, "try-error")
Duncan> Notice that I used "inherits", rather than testing for equality. It's
Duncan> documented that the result of try() will be "of class 'try-error'" if an
Duncan> error occurs, but there may be circumstances (in the future?) where
Duncan> different types of errors are signalled by using a more complicated class.
There's an additional reason for inherits(.,.) and hence
against class(<foo>) == "bar" :
Whenever try() does not catch an error, since there was none,
i.e., the result of try(foobar(..)) is just foobar(..),
foobar(..) may well return an object with an (S3) class vector
of length > 1.
In those cases, the equality test returns a logical vector,
typically c(FALSE, FALSE)
and using that in if(.....) gives at least a warning.
Martin
More information about the R-help
mailing list