循环遍历 xts 对象以获得合并输出

Looping through xts objects obtaining merged output

我有几个 xts 对象,我需要用它们来提供函数。 该函数向每个 xts 对象添加一个新列。

我需要帮助来完成以下两件事:

  1. 我想创建一个合并的 xts 对象,其中包含添加到原始 xts 对象的所有列的所有值
  2. 在新合并的 xts 对象中,我需要每一列的名称都是原始 xts 对象的列名称。

这是我的意思的一个例子:

require(xts)

A <- xts(rep(1:5), Sys.Date()-5:1)
colnames(A) <- c("AAA")
A$SecondCol <- A[,1] * 10

B <- xts(rep(5:10), Sys.Date()-7:2)
colnames(B) <- c("BBB")
B$SecondCol <- B[,1] * 10

一些任意函数

myFunction = function(x, n=2){
  x.sma <- runMean(x[,2], n)
  if (!is.null(dim(x.sma))) {
  colnames(x.sma) <- colnames(x[,1])
  }
  return(x.sma)
}

我正在寻找的是一种聪明的方法,这样我就可以获得一个 xts 对象,该对象具有 AAA 和 BBB 作为列名以及每个对象的 SecondCol 的值:

           AAA BBB
2015-08-17  NA  NA
2015-08-18  NA  55
2015-08-19  NA  65
2015-08-20  15  75
2015-08-21  25  85
2015-08-22  35  95
2015-08-23  45  NA

我不清楚你的问题,但我可以使用 myFunction 和对象 A 和 [ 创建包含列 "AAA""BBB" 的 xts 对象=15=] 你提供了。将所有对象放入列表中。在每个元素上调用您的函数,然后在结果列表上调用 merge

R> do.call(merge, lapply(list(A,B), myFunction))
           AAA BBB
2015-08-18  NA  NA
2015-08-19  NA  55
2015-08-20  NA  65
2015-08-21  15  75
2015-08-22  25  85
2015-08-23  35  95
2015-08-24  45  NA