r - 计算xts加权和时如何避免for循环?

标签 r xts

如何避免 for 循环计算 xts 加权和,如下所示:

library(xts)

thetaSum <- function(theta, w=c(1, 1, 1)) {
    sum(coredata(theta)*rev(w))
}

n <- 10
tmpVec <- rep(1, n)
tmpDates <- seq(as.Date("2000-01-01"), length = n, by = "day")
theta <- xts(tmpVec, order.by=tmpDates)

N <- 3
thetaSummed <- xts(rep(NA, n), order.by=tmpDates)

for (i in N:n) {
    thetaTemp <- theta[(i-N+1):i, ]
    thetaSummed[i] <- thetaSum(thetaTemp, w=rep(1, N))
}

thetaSummed

N是小于n的回顾周期。

for 循环有哪些快速替代方案?

最佳答案

您可以使用rollapply

rollapplyr(theta, width=3, FUN=thetaSum, fill=NA)

关于r - 计算xts加权和时如何避免for循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533798/

相关文章:

r - local()与R中其他关闭方法有何不同?

r - POSIXct 和 xts 中的时区,从 R 中的 GMT 转换

r - 为什么我不能直接绘制 xts 的箱线图?

R - FinancialInstrument Package 使用股票时更改符号名称

r - 使用 data.table 加速 rollapply

R XTS to.minutes5(), 没有按照预期的 "I"进行转换

r - 使用弹性表编程

r - 如何在 R 中设置 which 函数

r - 将残差绑定(bind)到具有缺失值的输入数据集

vim - 在 Vim 的缓冲区内运行 R