Хранение объекта 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']]
Надеюсь, что это ответило на ваш вопрос.