循环遍历 xts 对象以获得合并输出
Looping through xts objects obtaining merged output
我有几个 xts 对象,我需要用它们来提供函数。
该函数向每个 xts 对象添加一个新列。
我需要帮助来完成以下两件事:
- 我想创建一个合并的 xts 对象,其中包含添加到原始 xts 对象的所有列的所有值
- 在新合并的 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
我有几个 xts 对象,我需要用它们来提供函数。 该函数向每个 xts 对象添加一个新列。
我需要帮助来完成以下两件事:
- 我想创建一个合并的 xts 对象,其中包含添加到原始 xts 对象的所有列的所有值
- 在新合并的 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