[R] try / tryCatch for download.file( ) within a for loop when URL does not exist

Vishal Belsare shoot.spam at gmail.com
Tue Oct 16 22:54:53 CEST 2007


I am trying to download a bunch of files from a server, for which I am
using download.file( ) within a for loop. The script is working fine
except until download.file hits a URL which has no file, at which
point it exits. I want to change this behavior to simple log the
failure and maintain state within the for loop and iterate to next. I
read about try / tryCatch but am having trouble understanding what/how
it does. Thanks.

#begin script

date <- as.POSIXlt(as.Date("2007-10-15", "%Y-%m-%d"))
for (i in 1:difftime(as.POSIXlt(as.Date("2007-10-15",
"%Y-%m-%d")),"2007-10-01"))
	{
	if (date$wday != 0 & date$wday != 6) {
	datestr <- as.character(date, "%d%m%y") #make date character string ddmmyy
	url <- paste("http://www.bseindia.com/bhavcopy/eq",datestr,"_csv.zip",sep="")
	file <- paste("C:/",datestr,"_csv.zip",sep="")
	#options(show.error.messages = FALSE)
	#options(warn = -1)
	try(download.file(url, destfile = file, quiet = TRUE, mode = "wb"),
finally = cat("OK:",url,\n))
	date <- as.POSIXlt(as.Date(date - 86400))
	} else {date <- as.POSIXlt(as.Date(date - 86400))}
	}

# end script


Thanks,

Vishal Belsare



More information about the R-help mailing list