合并两个数据环境和do.call()

时间:2012-08-31 09:25:56

标签: r

考虑以下代码

require(quantmod)

list.X <- c('ANFCI',  'NFCI', 'STLFSI', 'WAAA', 'WBAA', 'WCOILWTICO','WFII10', 
            'WGS10YR', 'WGS1YR', 'WGS3YR', 'WGS5YR', 'WSWP10', 'WTB3MS')
data.X <- new.env()
getSymbols(list.X, src = 'FRED', from = '1950-01-01', env = data.X)

现在我将这些时间序列放在data.X环境中;让我需要输入data.X另一个时间序列:

getSymbols('SPY', from = '1950-01-01', env = data.X)

默认情况下,这是从Yahoo下载的。使用最后一个命令,我是否根据需要将其放入data.X

然后让我想合并它们。我相信像

这样的东西
X <- do.call(merge, as.list(c(list.X, 'SPY')), envir = data.X)

可行,但该命令无法正常工作。

Coudl你建议我做点什么吗?

谢谢,

1 个答案:

答案 0 :(得分:3)

试试这个:

mmerge <- function(.list, all=FALSE, env=.GlobalEnv) {
  .list <- lapply(.list, get, env)
  Reduce(function(...) merge(..., all=all), .list)
}

head(mmerge(list.X, env=data.X))
head(mmerge(as.list(c(list.X, 'SPY')), env=data.X))

点头致this question