在 quantmod 中使用 getSymbols() 时出错

Error using getSymbols() in quantmod

我正在尝试从纽约证券交易所随机 select 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)

得到错误

Error in read.table(file = file, header = header, sep = sep, quote = quote, : more columns than column names

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

Error in colnames<-(*tmp*, value = c("AIW.Open", "AIW.High", "AIW.Low", : length of 'dimnames' [2] not equal to array extent

感谢您的帮助!

正如 ?stockSymbols 中的 所说:

The symbols returned by stockSymbols may not be in the format necessary to retrieve data using getYahooData.

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

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

还有几件事要记住:

  1. Yahoo Finance、Google Finance 等不一定提供所有工具的历史数据。
  2. stockSymbols 返回的工具不一定是股票。它们可以是 ETF、ETN 等的代码

还有其他 question/answers 关于如何使用 trytryCatch 来捕获由于站点不提供历史数据而可能发生的错误。