我试图从纽约证券交易所随机选择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]的长度不等于数组范围
感谢您的帮助!
答案 0 :(得分:0)
正如?stockSymbols
中的注意所说:
stockSymbols
返回的符号可能不是使用getYahooData
检索数据所需的格式。
请注意TTR::getYahooData
从Yahoo Finance下载数据,就像getSymbols.yahoo
一样。
在使用使用随机数生成器的函数(即set.seed
)时,您还应该使用sample
,这样您的示例将是可重现的。
要记住的其他几件事情:
stockSymbols
返回的工具不一定是股票。它们可能是ETF,ETN等的代号。关于如何使用try
或tryCatch
来捕获因网站不提供历史数据而可能发生的错误,还有其他问题/答案。