R Quantmod,getSymbols尝试复制答案时出错

R Quantmod,getSymbols尝试复制答案时出错,r,quantmod,R,Quantmod,我刚刚下载了软件包Quantmod,一直在玩getSymbols。我希望能够获得多个股票的数据,如此问题所示: 不幸的是,当我试图复制答案时: tickers <- c("SPY","DIA","IWM","SMH","OIH","XLY", "XLP","XLE","XLI","XLB","XLK","XLU") getSymbols(tickers, from="2001-03-01", to="2011-03-11") 这是我的sessionInfo() 编辑:回

我刚刚下载了软件包
Quantmod
,一直在玩
getSymbols
。我希望能够获得多个股票的数据,如此问题所示:

不幸的是,当我试图复制答案时:

tickers <- c("SPY","DIA","IWM","SMH","OIH","XLY",
         "XLP","XLE","XLI","XLB","XLK","XLU")
getSymbols(tickers, from="2001-03-01", to="2011-03-11")
这是我的sessionInfo()


编辑:回应OP的评论:

因此,底线似乎是,至少可以说,提供免费下载历史数据的网站是古怪的。它们不一定适用于所有有效的符号,有时它们在没有明显原因的情况下变得不可用
ichart.yahoo.com/table.csv
在24小时前为我工作,但现在(对我)不工作。这可能是因为雅虎已经对我的IP实施了24小时锁定,如果他们检测到可解释为DDOS攻击的活动,他们就会这样做。或者是因为其他原因

下面查询Google的更新代码(目前也是如此)对除DJIA之外的所有东西都有效。请注意,如果指定交换和符号(
exchange:symbol
),则会更成功。没有交换,我无法下载SMH。最后,如果您遇到问题,请尝试取消对print语句的注释并将url粘贴到浏览器中,以查看发生了什么

tickers <- c("SPY","DJIA","IWM","NYSEARCA:SMH","OIH","XLY",
             "XLP","XLE","XLI","XLB","XLK","XLU")

g <- function(x,from,to,output="csv") {
  uri      <- "http://www.google.com/finance/historical"
  q.symbol <- paste("q",x,sep="=")
  q.from   <- paste("startdate",from,sep="=")
  q.to     <- paste("enddate",to,sep="=")
  q.output <- paste("output",output,sep="=")
  query    <- paste(q.symbol,q.output,q.from,q.to,sep="&")
  url      <- paste(uri,query,sep="?")
  # print(url)
  try(assign(x,read.csv(url),envir=.GlobalEnv))
}
lapply(tickers,g,from="2001-03-01",to="2011-03-11",output="csv")
原始响应:

这对我很有效,除了SMH和OIH

tickers <- c("SPY","DJIA","IWM","SMH","OIH","XLY",
                             "XLP","XLE","XLI","XLB","XLK","XLU")

f <- function(x) {
  uri    <- "http://ichart.yahoo.com/table.csv"
  symbol <- paste("s",x,sep="=")
  from   <- "a=2&b=1&c=2001"
  to     <- "d=2&e=11&f=2011"
  period <- "g=d"
  ignore <- "ignore=.csv"
  query  <- paste(symbol,from,to,period,ignore,sep="&")
  url    <- paste(uri,query,sep="?")
  try(assign(x,read.csv(url),envir=.GlobalEnv))
}
lapply(tickers,f)

ticker的原因可能与。。。将src改为google可以正常工作。这个问题已经在R-Forge的r610中修复。这个问题应该关闭/删除,因为这不是错误报告(或雅虎服务器问题)的合适论坛。我不确定R-Forge的r610,但问题是昨天下载的R和昨天下载的Quantmod。谢谢你@JoshuaUlrich,工作正常@user2492310:try
install.packages(“quantmod”,repos=”http://r-forge.r-project.org“”
您的解决方案中存在大量错误…
文件(文件,“rt”):无法连接到端口80上的“ichart.yahoo.com”。文件错误(文件“rt”):无法打开连接
是,我现在也失败了。这就是昨晚为我运行的代码。如果你转到我提供的链接,它是由雅虎管理的,他们的例子也不起作用(它昨晚起作用了…)。所以我想他们可能会在高负载下限制访问(??)。我知道谷歌就是这么做的。用法:yahoo.URL@SilverSpoon-上面的代码就是这么做的。今天它起作用了;昨天没有。这就是重点——谷歌更可靠。在我的例子中,“ichart.yahoo.com”不起作用,但“ichart.finance.yahoo.com”(用“finance”这个词)起作用。它让我失望了。是的,或者,你可以使用谷歌。
tickers <- c("SPY","DJIA","IWM","NYSEARCA:SMH","OIH","XLY",
             "XLP","XLE","XLI","XLB","XLK","XLU")

g <- function(x,from,to,output="csv") {
  uri      <- "http://www.google.com/finance/historical"
  q.symbol <- paste("q",x,sep="=")
  q.from   <- paste("startdate",from,sep="=")
  q.to     <- paste("enddate",to,sep="=")
  q.output <- paste("output",output,sep="=")
  query    <- paste(q.symbol,q.output,q.from,q.to,sep="&")
  url      <- paste(uri,query,sep="?")
  # print(url)
  try(assign(x,read.csv(url),envir=.GlobalEnv))
}
lapply(tickers,g,from="2001-03-01",to="2011-03-11",output="csv")
getSymbols("DJIA",src="FRED")
tickers <- c("SPY","DJIA","IWM","SMH","OIH","XLY",
                             "XLP","XLE","XLI","XLB","XLK","XLU")

f <- function(x) {
  uri    <- "http://ichart.yahoo.com/table.csv"
  symbol <- paste("s",x,sep="=")
  from   <- "a=2&b=1&c=2001"
  to     <- "d=2&e=11&f=2011"
  period <- "g=d"
  ignore <- "ignore=.csv"
  query  <- paste(symbol,from,to,period,ignore,sep="&")
  url    <- paste(uri,query,sep="?")
  try(assign(x,read.csv(url),envir=.GlobalEnv))
}
lapply(tickers,f)