我正在尝试将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")
任何建议都会有所帮助。
答案 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")
如果您希望使用索引或交换,tidyquant
有tq_index()
和tq_exchange()
可以通过管道传输(%>%
)到tq_get
。例如,您可以这样做以获得S&amp; P500中的所有股票:
tq_index("SP500") %>%
tq_get(get = "stock.prices"
from = "2011-01-01",
to = "2015-08-07")