如何用R语言库(含quantmod)获取股票/指数的对应货币代码?
嘿,刚好我之前折腾过用R获取股票/指数的货币信息,给你分享几个靠谱的方法:
1. 确定指定股票的货币代码
quantmod本身没有直接返回货币代码的专属函数,但我们可以借助其他更侧重元数据获取的R包来实现,推荐两个实用选项:
方法1:用yahoofinancer库(最直接)
这个包专门对接Yahoo Finance的API,能直接抓取股票的基础信息,包括货币代码:
# 先安装并加载库 install.packages("yahoofinancer") library(yahoofinancer) # 以苹果(AAPL)和加拿大皇家银行(RY.TO)为例 get_info("AAPL")$currency # 返回 USD get_info("RY.TO")$currency # 返回 CAD
方法2:用quantmod自带的getQuote函数
getQuote返回的报价数据里有时会包含货币字段,虽然不如上面的方法稳定,但如果不想装新包可以试试:
library(quantmod) # 获取报价并提取货币 quote_data <- getQuote("RY.TO") quote_data$Currency # 查看货币代码
2. 批量获取指数名称及对应货币代码
我们可以先定义要查询的指数代码列表,然后批量抓取信息并整理成你要的表格格式,用yahoofinancer配合dplyr就能轻松实现:
install.packages("dplyr") library(dplyr) # 定义目标指数的Yahoo代码 index_symbols <- c("^GSPTSE", "^DJI", "^GSPC", "^N225") # 批量抓取并整理数据 index_currency_table <- lapply(index_symbols, function(symbol) { info <- get_info(symbol) data.frame( 指数名称 = info$longName, 货币代码 = info$currency, stringsAsFactors = FALSE ) }) %>% bind_rows() # 查看结果 print(index_currency_table)
运行后会得到类似这样的输出:
指数名称 货币代码 1 S&P/TSX Composite Index CAD 2 Dow Jones Industrial Average USD 3 S&P 500 USD 4 Nikkei 225 JPY
小提示:Yahoo Finance的API偶尔会调整字段,如果某个函数突然失效,可以检查下包的版本,或者换用tidyquant(它也是基于Yahoo接口,语法更贴近tidyverse风格)。
内容的提问来源于stack exchange,提问作者Cricketer




