0

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

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

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

如果没有 for 循环,我怎么能做到这一点?

4

1 回答 1

1

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

对于时间序列,IMO,进行除法的正确方法将是对应于相同时间戳的值。为此,您应该首先使用列表对象的每个元素mergetempxts 时间序列,data然后进行除法。为此,您可以使用下面定义的lapply自定义函数div

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

lapply(X = data, FUN = div)
于 2013-03-18T04:55:41.597 回答