在R中的Quantmod包中,可以按以下方式下载股价数据
my_portfolio <- c("AAPL", "SBUX")
getSymbols(my_portfolio)这个很好用。我可以通过输入AAPL或SBUX来访问股票数据。例如
> head(AAPL)
AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2007-01-03 86.29 86.58 81.90 83.80 309579900 11.34
2007-01-04 84.05 85.95 83.82 85.66 211815100 11.59
2007-01-05 85.77 86.20 84.40 85.05 208685400 11.51
2007-01-08 85.96 86.53 85.28 85.47 199276700 11.56
2007-01-09 86.45 92.98 85.15 92.57 837324600 12.52
2007-01-10 94.75 97.80 93.45 97.00 738220000 13.12..。我可以用这种方法做很多很好的统计。
但是这是不方便的,因为如果我更改了my_portfolio,比如用"IBM"替换"AAPL",那么我必须在脚本的后面用IBM来更改AAPL的所有将来出现的情况。
我的问题:如何找到从getSymbols获得的与my_portfolio相关的下载数据,而不必第二次显式输入AAPL和SBUX?
发布于 2014-12-09 22:20:24
我倾向于这样做:
library(quantmod)
my_portfolio <- c("AAPL", "SBUX")
stocks <- lapply(my_portfolio,getSymbols,auto.assign=FALSE)
names(stocks) <- my_portfolio
# access the data
head(stocks[[my_portfolio[1]]])
# AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
# 2007-01-03 86.29 86.58 81.90 83.80 309579900 11.34
# 2007-01-04 84.05 85.95 83.82 85.66 211815100 11.59
# 2007-01-05 85.77 86.20 84.40 85.05 208685400 11.51
# 2007-01-08 85.96 86.53 85.28 85.47 199276700 11.56
# 2007-01-09 86.45 92.98 85.15 92.57 837324600 12.52
# 2007-01-10 94.75 97.80 93.45 97.00 738220000 13.12因此,这将生成一个包含股票价格的xts对象的命名列表。列表元素与您的投资组合中的股票具有相同的名称。
不幸的是,列名仍然是特定于股票的(例如,AAPL.Close而不仅仅是Close),但是您可以使用quantmod中的Cl(...)函数来克服这个问题。
https://stackoverflow.com/questions/27389615
复制相似问题