R 可变窗口大小的移动平均

R 可变窗口大小的移动平均,r,smoothing,R,Smoothing,我正在使用zoo::rollmean计算移动平均线。然而,平均每个值的窗口的大小是恒定的k(我认为在rollmean实现中出于性能原因) 是否有接受动态窗口的移动平均线的R实现 toSmoothed = c(1,2,3,2,1,2,3,2) dynamicRange = c(1,2,1,2,1,2,1,2) foo(toSmoothed, dynamicRange, fill = NA, align = "left") # please notice the aligned left # r

我正在使用
zoo::rollmean
计算移动平均线。然而,平均每个值的窗口的大小是恒定的
k
(我认为在
rollmean
实现中出于性能原因)

是否有接受动态窗口的移动平均线的R实现

toSmoothed   = c(1,2,3,2,1,2,3,2)
dynamicRange = c(1,2,1,2,1,2,1,2)
foo(toSmoothed, dynamicRange, fill = NA, align = "left") # please notice the aligned left
# return
# c(1,2.5,3,1.5,1,2.5,3,NA)

不确定包中是否有任何内容,但您可以这样做

foo <- function(toSmoothed, dynamicRange){
  x <- c(0, cumsum(toSmoothed))
  lower <- 1:length(toSmoothed)
  upper <- lower+dynamicRange
  x <- (x[upper]-x[lower])/(upper-lower)
  return(x)
}

foo(toSmoothed, dynamicRange)
[1] 1.0 2.5 3.0 1.5 1.0 2.5 3.0  NA

foo
zoo::rollapply
在这里很有用。尝试:

zoo::rollapply(toSmoothed, dynamicRange, FUN = mean, fill = NA, align = "left")
[1] 1.0 2.5 3.0 1.5 1.0 2.5 3.0  NA