使用lapply+getSymbols仅返回股票名称?如何获取行情数据?
解决方法
问题出在getSymbols()的auto.assign参数设置上:
- 当
auto.assign = TRUE时,函数会将股票行情数据直接存入全局环境,而函数本身仅返回股票代码字符串,这就是你的tickers_data列表只包含代码的原因。
方案一:直接让函数返回行情数据
将auto.assign设为FALSE,此时getSymbols()会直接返回对应股票的行情数据,lapply就能把这些数据收集到列表中:
library(quantmod) tickers <- c("AAPL","MSFT") tickers_data <- lapply(tickers, function(x) { getSymbols(x, src = "yahoo", auto.assign = FALSE)})
方案二:从全局环境提取已加载的数据
如果已经执行过原代码(数据已存入全局环境),可以通过get()函数从全局环境中提取数据并生成列表:
# 先确保数据已加载到全局环境 library(quantmod) tickers <- c("AAPL","MSFT") lapply(tickers, function(x) { getSymbols(x, src = "yahoo", auto.assign = TRUE)}) # 提取数据到列表 tickers_data <- lapply(tickers, get)
执行上述任意方案后,运行print(tickers_data)就能看到每个列表元素都是包含OHLCV(开盘/最高/最低/收盘/成交量)的行情数据对象。
内容的提问来源于stack exchange,提问作者konglr
相关产品推荐
相关产品推荐

