存储getSymbols返回的xts对象

时间:2015-01-21 14:30:01

标签: r xts quantmod

我正试图通过quantmod的开盘价和收盘价收集共同基金业绩数据。我已经删除了5000个基金的清单,并试图循环并获得每个基金的一个开盘价和收盘价。我无法调用由getSymbols()产生的xts对象,因为它被无形地调用到环境中。由于对象存储为其股票名称,我尝试通过其股票名称来调用它。

到目前为止

代码:

## loop thru list and use quantmod to calculate performance from 1/2/14 to 12/31/14
for(i in 1:4881){
    ticker <- tickernames[i]
    getSymbols(ticker)
    Open <- ticker["2014-01-02",1]
    Close <- ticker["2014-12-31",4]

    performance2014[i] = (Open - Close)/Open
}

有没有办法可以使用ls()来调用对象?

1 个答案:

答案 0 :(得分:2)

关键是在auto.assign中将FALSE参数设置为getSymbols。这样,您可以停用getSymbols自动分配到全局环境。

以下是一个应该引导您逐步完成的示例:

require(quantmod)

#Vector of symbols to fetch prices for
symbols <- c('MSFT','SBUX','GOOGL')

#Initialize a list to store the fetched prices
myList <- list()

#Loop through symbols, fetch prices, and store in myList
myList <-lapply(symbols, function(x) {getSymbols(x,auto.assign=FALSE)} )

#Housekeeping
names(myList) <- symbols

#Access MSFT prices
myList[['MSFT']]

#Access SBUX prices
myList[['SBUX']]

#Access GOOGL prices
myList[['GOOGL']]

希望这能回答你的问题。