You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

quantmod与tidyquant获取财务数据失败,请求协助排查问题

我刚复现了你的问题——不管是用tidyquant::tq_get("AAPL", get = "financials")还是quantmod::getFin("AAPL"),都会触发你提到的NA/NaN argument错误,前者返回NA加警告,后者直接报错。

问题根源

这两个函数的底层都是依赖Google Finance的网页结构来抓取财务数据,但Google Finance在近期调整了页面的HTML布局,导致这两个包内置的网页解析逻辑(尤其是定位表格表头的thead索引逻辑)完全失效,找不到正确的数据位置,从而抛出索引错误。

可行的替代方案

既然Google Finance的数据源已经不可用,推荐改用更稳定的数据源和对应的R包函数:

  • 方案1:用tidyquant对接Yahoo Finance
    你可以放弃get="financials"这个旧参数,改用tidyquant中针对Yahoo Finance的专用参数来获取三大报表:

    library(tidyquant)
    
    # 获取季度资产负债表
    aapl_bs <- tq_get("AAPL", get = "balance_sheet", periodicity = "quarter")
    # 获取季度利润表
    aapl_is <- tq_get("AAPL", get = "income_statement", periodicity = "quarter")
    # 获取季度现金流量表
    aapl_cf <- tq_get("AAPL", get = "cash_flow", periodicity = "quarter")
    

    Yahoo Finance的接口目前维护得更稳定,数据更新也及时。

  • 方案2:用quantmod的官方替代函数
    quantmod自带的getFinancials()函数(注意和getFin()区分)默认对接Yahoo Finance,能正常获取数据:

    library(quantmod)
    
    aapl_fin_data <- getFinancials("AAPL", src = "yahoo")
    # 查看季度资产负债表
    viewFinancials(aapl_fin_data, "BS", "Q")
    # 查看季度利润表
    viewFinancials(aapl_fin_data, "IS", "Q")
    
  • 方案3:抓取SEC官方披露数据(更权威)
    如果需要最权威的上市公司财务数据,可以用finreportr包直接从SEC的EDGAR数据库抓取10-K/10-Q报表:

    library(finreportr)
    
    # AAPL的CIK代码是0000320193
    aapl_10q <- getFilings(cik = "0000320193", form.type = "10-Q", filing.year = 2024)
    

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:52:39