如何使用yahoofinancer批量创建Ticker对象并解决报错问题
解决yahoofinancer批量创建Ticker对象的报错问题
报错原因
Ticker$new()返回的是环境类型的对象,你初始化的x <- c()是原子向量(仅能存储数值、字符等基础类型),无法容纳环境类对象,因此赋值时触发类型不匹配的报错。
解决方案1:直接批量创建全局环境对象
不需要中间向量x,直接在循环里用assign()给每个股票代码创建独立的Ticker对象:
library(yahoofinancer) stocks <- c("IBM", "AAPL") for (stock in stocks) { # 统一转大写,避免大小写不一致导致的问题 stock_code <- toupper(stock) assign(stock_code, Ticker$new(stock_code)) }
运行后,全局环境里会生成IBM、AAPL等对应的Ticker对象,直接调用即可。
解决方案2:用列表集中存储(推荐)
更符合R编程规范,避免全局环境被大量变量污染,同时方便统一管理所有Ticker对象:
library(yahoofinancer) stocks <- c("IBM", "AAPL") # 初始化空列表 ticker_collection <- list() for (stock in stocks) { stock_code <- toupper(stock) ticker_collection[[stock_code]] <- Ticker$new(stock_code) } # 调用单个对象示例 ticker_collection$IBM ticker_collection[["AAPL"]]
内容的提问来源于stack exchange,提问作者JR1
相关产品推荐
相关产品推荐

