将 getSymbols 结果合并到一个 xts 对象中

use*_*354 4 r quantmod

我有以下代码:

library(quantmod)
tckrs <- c("TLT", "LQD", "HYG", "SPY", "DBC")
NumTckrs  <-  length(tckrs)
getSymbols(tckrs, from="1900-01-01", to=Sys.Date())

# merge to allign the start dates
MainDF <- merge(Ad(TLT), Ad(LQD), Ad(HYG), Ad(SPY), Ad(DBC), all=FALSE)
Run Code Online (Sandbox Code Playgroud)

我不想在最后一行重复股票代码。有谁知道如何做到这一点?

Jos*_*ich 5

将所有数据加载到环境中,然后调用Ad每个数据并合并它们。另请注意,getSymbols默认情况下返回一个 xts 对象,因此您MainDF是一个 xts 对象,而不是 data.frame。

library(quantmod)
# create new environment
myEnv <- new.env()
# pull all data and load into myEnv
getSymbols("TLT;LQD;HYG;SPY;DBC", env=myEnv)
# eapply calls Ad on each symbol in myEnv and returns a list
# do.call calls merge with each element returned from eapply as an argument
MainXTS <- do.call(merge, c(eapply(myEnv, Ad),all=FALSE))
Run Code Online (Sandbox Code Playgroud)