错误在 fix.by(by.y, y) quantmod 函数错误

Error in fix.by(by.y, y) error in quantmod function

我正在尝试使用 quantmod 将数据拉入 r。我在使用“getQuote”函数时收到“fix.by(by.y, y) 中的错误:'by' 必须指定一个唯一有效的列”。

使用手写的多只股票列表 (tickers<-c("CCL","RCR","BA")) 时,我没有收到此错误,但当我尝试使用从交易所提取的代码列表时,出现此错误。

有人知道解决办法吗?

谢谢


library(tidyquant) # edited to be included/ it is needed
library(quantmod)

AMEX <-
  tq_exchange("AMEX")

tickers <- AMEX$symbol

key_metrics <- what_metrics <- yahooQF(c( 
  # source information
  "Symbol", 
  "Name",
  "Dividend Yield", 
  "Earnings/Share",
  "P/E Ratio",
  "trailingPE",
  "quoteSourceName",
  "Source Interval",
  "Exchange Full Name",
  "Exchange Data Delay",
  "Currency"))

metrics <- getQuote(paste(tickers, sep="", collapse=";"), what=what_metrics)

#downloading set: 1 , 2 , ...done
#Error in fix.by(by.y, y) : 'by' must specify a uniquely valid column

问题是您有很多代码对 yahoo 无效。所有带“.”的代码或“^”不要 return 来自雅虎财经的数据。例如,您可以在雅虎财经网站上查看“BIOX.WS”。奇怪的是 json 调用不会 return 错误,因为雅虎不会生成错误但 return 是一个空列表。否则该函数会给出正确的错误响应,而不是您当前收到的错误。

如果删除这些代码,getQuote 函数将起作用。

# remove tickers which have . or ^ in the symbol
tickers <- AMEX$symbol[!grepl("\.|\^", AMEX$symbol)]

metrics <- getQuote(paste(tickers, collapse=";"), what=what_metrics)