Хранение объекта xts, возвращаемого getSymbols

Я пытаюсь собрать данные о производительности взаимных фондов по ценам открытия и закрытия из QuantMod. Я просмотрел список из 5000 фондов и пытаюсь пройтись по ним и получить по одной цене открытия и закрытия для каждого фонда. У меня проблемы с вызовом объекта XTS, полученного getSymbols() как это называется невидимо в окружающую среду. Поскольку объект хранится как его имя тикера, я попытался назвать его по имени тикера.

Код до сих пор:

## 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 ответ

Ключ должен установить 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']]

Надеюсь, что это ответило на ваш вопрос.

Другие вопросы по тегам