在quantmod中使用getSymbols()时出错

时间:2016-02-20 21:47:38

标签: r quantmod

我试图从纽约证券交易所随机选择50只股票,然后获取它们的符号。这段代码:

 require(quantmod)
 NYstocks<-stockSymbols(exchange="NYSE")
 NYsymbols<-NYstocks[["Symbol"]]
 my_portfolio<-sample(NYsymbols, 50, replace = FALSE)
 date_begin <- as.Date("2014-02-18")
 date_end <- as.Date("2016-02-18")
 tickers <- getSymbols(my_portfolio, from = date_begin, to = date_end)

收到错误

  

read.table出错(file = file,header = header,sep = sep,quote = quote,:   列数多于列名

my_portfolio是一个字符向量,所以我很难弄清楚它对列和列名的含义。我尝试过使用src="google"并获得了

  

colnames<-中的错误(*tmp*,值= c(“AIW.Open”,“AIW.High”,“AIW.Low”,:   'dimnames'[2]的长度不等于数组范围

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

正如?stockSymbols中的注意所说:

  

stockSymbols返回的符号可能不是使用getYahooData检索数据所需的格式。

请注意TTR::getYahooData从Yahoo Finance下载数据,就像getSymbols.yahoo一样。

在使用使用随机数生成器的函数(即set.seed)时,您还应该使用sample,这样您的示例将是可重现的。

要记住的其他几件事情:

  1. Yahoo Finance,Google Finance等不一定提供所有工具的历史数据。
  2. stockSymbols返回的工具不一定是股票。它们可能是ETF,ETN等的代号。
  3. 关于如何使用trytryCatch来捕获因网站不提供历史数据而可能发生的错误,还有其他问题/答案。