在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
,例如将"AAPL"
替换为"IBM"
,那么我必须更改AAPL
&#39;的所有未来事件。在脚本的后面加IBM
。
我的问题:
如何找到与从my_portfolio
获得的getSymbols
相关联的下载数据,而无需再次明确键入AAPL
和SBUX
?
答案 0 :(得分:1)
我倾向于这样做:
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
),但您可以使用例如Cl(...)
函数来解决该问题。 {1}}。