在没有for循环的多变量XTS列表上划分

时间:2013-03-18 04:18:09

标签: r xts

我有一个2列XTS的列表,我想将每个XTS的第二列除以第三个XTS,并将结果存储回第二列。我目前正在使用for循环来执行此操作:

for(i in 1:length(data)){
  data[[i]][,2] <- data[[i]][,2] / temp
}

temp是单列XTS,它有时比数据中的XTS长,有时不会,但它们确实重叠。

如果没有for循环,我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

没有适当的样本数据拍摄。如果您提供样本数据,我会相应地更新答案。

对于时间序列,IMO,正确的划分方式将是对应于相同时间戳的值。要做到这一点,您应首先merge temp xts时间序列与列表对象data的每个元素,然后进行除法。为此,您可以使用lapply和自定义函数div,如下所示。

div <- function(x) {
    x <- merge(x,temp)
    x[,2] <- x[,2] / x[,3]
}

lapply(X = data, FUN = div)