2015-11-23 2 views
0

Я использую следующий код для загрузки YDD AdjClose SPY.Создание переменных через цикл в r

library(tseries) 
AjdClose_SPY <- get.hist.quote("SPY", quote="Adj", start="2015-01-01", retclass="zoo") 

Теперь, скажем, у меня есть портфель

portfolio <- c('SPY','AAPL','HD') 

Как бы я быть в состоянии проходным «портфолио» и создать переменную «AdjClose_» для каждого тикер в моем портфолио? Заранее спасибо!

+0

Просто попробуйте 'setNames (lapply (портфель, функция (х) get.hist.quote (х, цитаты = "Adj", start = "2015-01-01", retclass = "zoo")), paste0 ("AjdClose _", портфолио)) '. Вы получите объект «list», имена которого указаны вами. Не создавайте несколько переменных; один именованный список намного чище и проще в использовании. – nicola

+0

или возможно: 'setNames (do.call (merge, lapply (портфолио, get.hist.quote, quote =" Adj ", start =" 2015-01-01 ", retclass =" zoo ")), портфолио)' –

ответ

0

Вы видели quantmod пакет? Пример:

library(quantmod) 
portfolio <- c('SPY','AAPL','HD') 
getSymbols(portfolio, start = "2015-01-01") 

Это создаст XTS объекты для каждого тикер в portfolio в текущей среде, которые держат «Open», «High», «Low», «Закрыть», «Volume», и «Скорректированный» цена данных для каждого тикера.

Если после этого вы хотите, вы можете поместить все Скорректированные цены в кадре данных следующим образом:

AdjPrices <- do.call(merge, lapply(portfolio, function(x) Ad(get(x)))) 
+0

Это работало как шарм. Я совершенно смущен, хотя, как черт сделал: «AdjPrices <- do.call (merge, lapply (портфолио, функция (x) Ad (get (x))))« Знаете, чтобы скорректировать закрытие? – purealpha

+0

'lapply' циклически перемещается по всем символьным строкам в' портфолио' и применяет к ним 'Ad (get (x))'. Функция quantmod 'Ad()' извлекает скорректированное закрытие и 'get (x)' вызывает объект R с использованием символьной строки. 'do.call (merge, ...)' затем объединяет все элементы списка из 'lapply()' в один кадр данных. –

1

Проверить назначить

Пример:

stock = "AAPL" 
assign(paste0("AdjClose_", stock), 100) 
Смежные вопросы