R quantmod-getQuote()不适用于不同交易所的报价器

R quantmod-getQuote()不适用于不同交易所的报价器,r,quantmod,R,Quantmod,我正在通过quantmod-getQuote()找到我遇到的问题的解决方案 当我运行以下命令时 metrics <- yahooQF(c("Name", "Volume", "P/E Ratio", "Dividend Yield", "Shares Outstanding")) symbols2 <- c("GOOG", "MSFT") stats <- getQuote(symbols2, what = metrics) 错误消息: Error in (function

我正在通过
quantmod
-
getQuote()
找到我遇到的问题的解决方案

当我运行以下命令时

metrics <- yahooQF(c("Name", "Volume", "P/E Ratio", "Dividend Yield", "Shares Outstanding"))
symbols2 <- c("GOOG", "MSFT")
stats <- getQuote(symbols2, what = metrics)
错误消息:

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : 
  arguments imply differing number of rows: 2, 3
In addition: Warning message:
In getQuote.yahoo(Symbols = c("GOOG", "MSFT", "3888.HK"), what = list( :
  symbols have different timezones; converting to local time

有人知道这方面的解决方法吗?我似乎无法在
getQuote()
函数中找到要更改的内容。

我可能是错的,但我认为出现错误的原因是,纳斯达克有2个计数器,而香港交易所只有一个计数器(例如,“参数意味着行数不同”错误)

当我试图从纳斯达克和香港交易所获得两个柜台的财务数据时,问题得到了解决:

metrics <- yahooQF(c("Name", "Volume", "P/E Ratio", "Dividend Yield", "Shares Outstanding"))
symbols2 <- c("GOOG", "MSFT", "0005.HK", "3888.HK")
stats <- getQuote(symbols2, what = metrics)

Warning message:
In getQuote.yahoo(Symbols = c("GOOG", "MSFT", "0005.HK", "3888.HK" :
  symbols have different timezones; converting to local time

stats
             Trade Time                  Name   Volume P/E Ratio Dividend Yield Shares Outstanding
GOOG    2018-09-20 04:00:01         Alphabet Inc.  1077192 50.576115             NA          349883008
MSFT    2018-09-20 04:00:01 Microsoft Corporation 18559784 52.441310    0.014839678         7668219904
0005.HK 2018-09-20 16:08:17         HSBC HOLDINGS 15168181 18.303152    0.007505519        19422699520
3888.HK 2018-09-20 16:08:17              KINGSOFT  5549058  4.991025    0.000952381         1365229952

metrics问题不在于股票代码名称中的点。实际上,您在函数中发现了一个bug

如果您运行
getQuote(“3888.HK”,what=metrics)
您会得到一个结果:

                 Trade Time     Name  Volume P/E Ratio Dividend Yield Shares Outstanding
3888.HK 2018-09-20 16:08:17 KINGSOFT 5549058  4.991025    0.000952381         1365229952
问题是时区不同。如果每个时区的计时器不相等,您将得到一个错误

这项工作:

symbols2 <- c("GOOG", "MSFT", "0005.HK", "3888.HK")
symbols2 <- c("GOOG", "MSFT", "0005.HK", "3888.HK", "FAGR.BR", "AGFB.BR")

symbols2谢谢,你说得对,我刚刚添加了相同数量的股票代码,我能够检索数据。这是伟大的,但我有大约3/4不同交易所的不同股票。也许我需要确保所有交易所拥有相同数量的公司。请您详细说明“另一种选择是您可以通过交易所获得财务信息”。我目前正在做的事情如下:
USstocks
                 Trade Time     Name  Volume P/E Ratio Dividend Yield Shares Outstanding
3888.HK 2018-09-20 16:08:17 KINGSOFT 5549058  4.991025    0.000952381         1365229952
symbols2 <- c("GOOG", "MSFT", "0005.HK", "3888.HK")
symbols2 <- c("GOOG", "MSFT", "0005.HK", "3888.HK", "FAGR.BR", "AGFB.BR")
symbols2 <- c("GOOG", "MSFT", "FB", "0005.HK", "3888.HK")
symbols2 <- c("GOOG", "MSFT", "0005.HK", "3888.HK", "FAGR.AB")
 Qposix <- sapply(split(sq, sq$exchangeTimezoneName), convertTZ)