Ralph, This isn't really on-topic for R-SIG-Finance, so please respond to me off-list if you have any questions.
The bad news: I'm not sure how to do what you want with a try-catch block. I can see why you tried this (given your Java experience) but the good news is that it's not necessary. The solution below should work and should also be faster. # vector of symbols brsym <- c("^BVSP", "^GSPTSE", "^N225", "CAC4L.NX", "^BSESN") # paste is vectorized, no need to loop j <- "http://finance.yahoo.com/d/quotes.csv?s=" j <- paste0(j, paste0(brsym,collapse="+"), "&f=sd1ohgl1vqd") # use na.strings arg to convert "N/A" to R's NA X <- read.csv(j, header=FALSE, as.is=TRUE, na.strings="N/A") # store rows with missing dates in new object badsymbols <- X[is.na(X$V2),] # remove rows with missing dates from 'X' X <- X[!is.na(X$V2),] # reformat date X$V2 <- format(as.Date(X$V2, "%m/%d/%Y"), "%Y%m%d") # paste into one string per row Y <- with(X, paste(paste(V1, "-", V2), V3, V4, V5, V6, V7, sep=",")) # write to file Best, -- Joshua Ulrich | about.me/joshuaulrich FOSS Trading | www.fosstrading.com On Mon, Mar 24, 2014 at 5:10 PM, R Vince <rvinc...@gmail.com> wrote: > > I'm terribly confused on how to use try catch to continue execution within > a loop > > I take, say, the data for 150 symbols from yahoo, and seek to parse them > and append to existing index files in csv format. Sometimes the data is > bad, the code pukes inside the loop and execution stops, as evident here: > > [109] "^BVSP - 20140324,47381.98,48141.789,47381.98,47993.422,0" > [110] "^GSPTSE - 20140324,14335.76,14402.49,14226.88,14278.55,163174560" > [111] "^N225 - 20140324,0,0,0,14475.3,0" > [112] "CAC4L.NX - 20140324,N/A,N/A,N/A,0,N/A" > [113] "^BSESN - 20140324,N/A,N/A,N/A,0,N/A" > Error in value[[3L]](cond) : unused argument(s) (cond) > Calls: tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous> > In addition: Warning message: > In if (file == "") file <- stdout() else if (is.character(file)) { : > the condition has length > 1 and only the first element will be used > Execution halted > > Below is the code I am using, where i use tryCatch() to continue execution > within the loop, but for whatever reason, it still breaks out of the loop > on an error. Can someone please point out the error of my ways here? Thanks > , Ralph Vince > > j <- "http://finance.yahoo.com/d/quotes.csv?s="; > for (i in 1:150) { > j <- paste(j,brsym[[i]],sep="+"); > } > j <- paste(j,"&f=sd1ohgl1vqd",sep=""); > print(j); > X <- read.csv(j, header=FALSE,as.is=TRUE); > #print(X); > for (i in 1:150) { > tryCatch({ > d<-strsplit(X[i,2], '/'); > dd<-d[[1]][3]; > if (as.numeric(d[[1]][1]) < 10){ > dd<-paste(dd,0,sep=""); > } > dd<-paste(dd,d[[1]][1],sep=""); > if (as.numeric(d[[1]][2]) < 10){ > dd<-paste(dd,0,sep=""); > } > dd<-paste(dd,d[[1]][2],sep=""); > dd<-paste(dd,X[i,3],sep=","); > dd<-paste(dd,X[i,4],sep=","); > dd<-paste(dd,X[i,5],sep=","); > dd<-paste(dd,X[i,6],sep=","); > dd<-paste(dd,X[i,7],sep=","); > ko <- paste(X[i,1], "-",dd); > print(ko); > > k <- paste("/home/rvince/AsciiCsv/ES50/", X[i,1], sep=""); > k <- trim.whitespace(k); > k <- paste(k,".csv", sep=""); > write.table(dd, k, append = TRUE, quote = FALSE, sep = ",", > eol = "\n", na = "0", dec = ".", row.names = FALSE, > col.names = FALSE, qmethod = c("escape", "double")); > }, error = function() next) > } > > [[alternative HTML version deleted]] > > _______________________________________________ > R-SIG-Finance@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-sig-finance > -- Subscriber-posting only. If you want to post, subscribe first. > -- Also note that this is not the r-help list where general R questions > should go. _______________________________________________ R-SIG-Finance@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. If you want to post, subscribe first. -- Also note that this is not the r-help list where general R questions should go.