我正在使用R包tseries下载一些数据,
require('tseries')
tickers<- c('JPM','AAPL','MSFT','FB','GE');
prices = matrix(NA,nrow=40,ncol=6)
startdate<-'2015-02-02'
enddate<-'2015-03-30'# 40 rows dim()
for(i in 1:5){
prices[,i]<-get.hist.quote(
instrument=tickers[i],
start=startdate,
end=enddate,
quote='AdjClose',
provider='yahoo')
}
colnames(prices)<-c('JPM','AAPL','MSFT','FB','GE');
我想构建一个保存调整价格和日期信息的矩阵,但我不知道如何访问动物园日期列,比如当我使用get.hist.quote()构建一个动物园对象时,我可以像这样查看对象
但是当我将它们保存到矩阵时,缺少日期列
答案 0 :(得分:2)
此处Map
应用于get.hist.quote
将为每个自动收报机创建一个动物园对象。然后我们使用zoo的多路merge.zoo
将它们合并在一起,创建一个最终的动物园对象prices
:
prices <- do.call(merge,
Map(get.hist.quote, tickers,
start=startdate,
end=enddate,
quote='AdjClose',
provider='yahoo')
)
答案 1 :(得分:1)
我可能会将所有系列保留在zoo
对象中。这可以像在下面的代码中那样完成,从而也避免了你的for循环等。之后你总是可以通过matrix
将这个对象转换为as.matrix()
。
prices <-lapply(tickers, get.hist.quote, start=startdate, end=enddate, quote='AdjClose')
prices <- Reduce(cbind, prices)
names(prices) <- tickers
prices <- as.matrix(prices)
head(prices)
JPM AAPL MSFT FB GE
2015-02-02 55.10 118.16 40.99 74.99 23.99
2015-02-03 56.35 118.18 41.31 75.40 24.25
2015-02-04 56.01 119.09 41.54 75.63 23.94
2015-02-05 56.40 119.94 42.15 75.61 24.28
2015-02-06 57.51 118.93 42.11 74.47 24.30
2015-02-09 57.44 119.72 42.06 74.44 24.42