【问题标题】:Error in fix.by(by.y, y) error in quantmod functionquantmod 函数中的 fix.by(by.y, y) 错误
【发布时间】:2020-06-27 06:57:54
【问题描述】:

我正在尝试使用 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

【问题讨论】:

  • 是否需要library(tidyquant)tq_exchange("AMEX") 不幸地给了我一个 NA
  • 确实如此。那是我的错误。我将在上面进行编辑。
  • tq_exchange("AMEX") 给我错误:Symbol 列不存在。有人有同样的反应吗?

标签: r quantmod


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢!你是编码绝地!
  • 不管怎样,amex &lt;- TTR::stockSymbols(exchange = "AMEX") 返回 277 家公司,我可以毫无错误地获取所有 277 个股票代码 (amex$Symbol)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
  • 2019-08-10
  • 2013-07-21
  • 1970-01-01
  • 2017-12-26
相关资源
最近更新 更多