将多个xts对象转换为r中的多个data.frames

时间:2015-09-02 00:43:49

标签: r dataframe xts

我正在尝试将Global环境中的多个xts对象转换为多个同名的data.frames。我正在尝试创建一个可以提供给程序的data.frames数组。

我的代码创建了xts对象,但是我必须返回手动转换每个xts对象,例如(LMT <- as.data.frame(LMT))。我希望一次做100或股票,这样可以节省大量时间。我能够在代码清单中为下面的例子创建它的库存对象。

我的代码如下

require(quantmod)
require(xts)
tickers <- c("REGN", "LMT", "ZN", "OXY", "PG", "WBA", "EXC")     

FromDate = "2011-01-01"
ToDate = "2015-08-07" #Set one day ahead 
getSymbols(tickers, from = FromDate, to = ToDate,  src="yahoo")
###Convert to Data Frame
stocks[ticker] <- as.data.frame (c("REGN", "LMT", "ZN", "OXY", "PG", "WBA", "EXC")

任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:1)

不要让section_id在全局环境中创建对象,而是创建一个新环境并告诉getSymbols在那里创建对象。

getSymbols

然后,您可以使用require(quantmod) tickers <- c("REGN", "LMT", "ZN", "OXY", "PG", "WBA", "EXC") dataEnv <- new.env() getSymbols(tickers, from="2011-01-01", to="2015-08-07", env=dataEnv) 循环遍历新环境中的所有对象,并向其应用函数,返回列表。

eapply

答案 1 :(得分:1)

您可以考虑tidyquant包来解决此问题。您可以将代码提供给tq_get()函数,该函数将返回一个包含所有价格的数据框。您可以使用任意数量的股票代码执行此操作。

library(tidyquant)
tickers <- c("REGN", "LMT", "ZN", "OXY", "PG", "WBA", "EXC")
tickers %>%
    tq_get(get  = "stock.prices",
           from = "2011-01-01",
           to   = "2015-08-07")

如果您希望使用索引或交换,tidyquanttq_index()tq_exchange()可以通过管道传输(%>%)到tq_get 。例如,您可以这样做以获得S&amp; P500中的所有股票:

tq_index("SP500") %>%
    tq_get(get  = "stock.prices"
           from = "2011-01-01",
           to   = "2015-08-07")