[R] How to check for existence url from within a function?

Heinz Tuechler tuechler at gmx.at
Sat May 26 17:51:00 CEST 2007


Thank you, Duncan, especially for the hint concerning "inherits".

Heinz

At 08:02 26.05.2007 -0400, Duncan Murdoch wrote:
>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
>> not find a way to do it from within a function, as in the second part.
>> 
>> Where could I find information on how to do this?
>> 
>> Thanks,
>> Heinz
>> 
>> 
>> ## set nonexisting url
>> url.string <- 'http://www.google.at/nonexist.html'
>> 
>> ## first part
>> 1 # to start with defined .Last.value
>> try(con.url <- url(url.string, open='rb'))
>> class.try.res <- class(.Last.value)
>> try.error <- class.try.res== 'try-error'
>> print(try.error)      # TRUE
>> try(close(con.url))
>> 
>> ## try() within a function
>> url.error <- function(url.string) {
>>   1 # to start with defined .Last.value
>>   try(con.url <- url(url.string, open='rb'))
>>   class.try.res <- class(.Last.value)
>>   try.error <- class.try.res== 'try-error'
>
>.Last.value isn't set until your function returns.  You should write this as
>
>con.url <- try(url(url.string, open='rb'))
>try.error <- inherits(con.url, "try-error")
>
>Notice that I used "inherits", rather than testing for equality.  It's 
>documented that the result of try() will be "of class 'try-error'" if an 
>error occurs, but there may be circumstances (in the future?) where 
>different types of errors are signalled by using a more complicated class.
>
>Duncan Murdoch
>
>>   print(try.error)
>>   try(close(con.url))
>>   invisible(try.error)
>> }
>> 
>> ## call the function
>> url.error(url.string)   # result -> FALSE
>> 
>> ______________________________________________
>> R-help at stat.math.ethz.ch 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