>>>>> Rene Braeckman writes: > I had the same problem some time ago. Below is a function that I > picked up on the web somewhere (can't remember where; may have been a > newsletter). It's based on the tseries function but the difference is > that this function produces a data frame with a column containing the > dates of the quotes, instead of a time series object. I had to replace > "%d-%b-%y" by "%Y-%m-%d" to make it work, probably as you stated > because the format was changed by Yahoo.
This issue should be taken care of now by a new release of tseries I put out two days ago. -k > Hope this helps. > Rene > # ---------------------------------------------------------------------- > # "df.get.hist.quote()" function > # > # Based on code by A. Trapletti (package tseries) > # > # The main difference is that this function produces a data frame with > # a column containing the dates of the quotes, instead of a time series > # object. > df.get.hist.quote <- function (instrument = "ibm", > start, end, > quote = c("Open","High", "Low", > "Close","Volume"), > provider = "yahoo", method = "auto") > { > if (missing(start)) > start <- "1970-01-02" > if (missing(end)) > end <- format(Sys.time() - 86400, "%Y-%m-%d") > provider <- match.arg(provider) > start <- as.POSIXct(start, tz = "GMT") > end <- as.POSIXct(end, tz = "GMT") > if (provider == "yahoo") { > url <- paste("http://chart.yahoo.com/table.csv?s=", instrument, > format(start, "&a=%m&b=%d&c=%Y"), format(end, > "&d=%m&e=%d&f=%Y"), > "&g=d&q=q&y=0&z=", instrument, "&x=.csv", sep = "") > destfile <- tempfile() > status <- download.file(url, destfile, method = method) > if (status != 0) { > unlink(destfile) > stop(paste("download error, status", status)) > } > status <- scan(destfile, "", n = 1, sep = "\n", quiet = TRUE) > if (substring(status, 1, 2) == "No") { > unlink(destfile) > stop(paste("No data available for", instrument)) > } > x <- read.table(destfile, header = TRUE, sep = ",") > unlink(destfile) > nser <- pmatch(quote, names(x)) > if (any(is.na(nser))) > stop("This quote is not available") > n <- nrow(x) > lct <- Sys.getlocale("LC_TIME") > Sys.setlocale("LC_TIME", "C") > on.exit(Sys.setlocale("LC_TIME", lct)) > dat <- gsub(" ", "0", as.character(x[, 1])) > dat <- as.POSIXct(strptime(dat, "%Y-%m-%d"), tz = "GMT") > if (dat[n] != start) > cat(format(dat[n], "time series starts %Y-%m-%d\n")) > if (dat[1] != end) > cat(format(dat[1], "time series ends %Y-%m-%d\n")) > return(data.frame(cbind(Date=I(format(dat[n:1],"%Y-%m-%d")),x[n:1,nser]),row > .names=1:n)) > } > else stop("Provider not implemented") > } > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Daniele Amberti > Sent: Friday, February 09, 2007 5:22 AM > To: r-help > Subject: [R] get.hist.quote problem yahoo > I have functions using get.hist.quote() from library tseries. > It seems that something changed (yahoo) and function get broken. > try with a simple > get.hist.quote('IBM') > and let me kow if for someone it is still working. > I get this error: > Error in if (!quiet && dat[n] != start) cat(format(dat[n], "time series > starts %Y-%m-%d\n")) : > missing value where TRUE/FALSE needed > Looking at the code it seems that before the format of dates in yahoo's cv > file was not iso. > Now it is iso standard year-month-day > Anyone get the same problem? > ------------------------------------------------------ > Passa a Infostrada. ADSL e Telefono senza limiti e senza canone Telecom > http://click.libero.it/infostrada9feb07 > ______________________________________________ > R-help@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. ______________________________________________ R-help@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.