NA 的 rollmeanr 问题

rollmeanr issue with NA

对于基地,令:

library(zoo)
x1=c(1,2,3,4)
x2=rollmeanr(x1,2,fill=NA)
x=cbind(x1,x2)
     x1  x2
[1,]  1  NA
[2,]  2 1.5
[3,]  3 2.5
[4,]  4 3.5

但是如果基地里有NArollmeanr就不行了:

x1[1]=NA
x3=rollmeanr(x1,2,fill=NA)
cbind(x1,x2,x3)
     x1  x2 x3
[1,] NA  NA NA
[2,]  2 1.5 NA
[3,]  3 2.5 NA
[4,]  4 3.5 NA

x3[3] 应该是 2.5 因为它有 2 个先例数据。
有办法解决这个问题吗?

zoo 在版本 1.8-2 (https://cran.r-project.org/web/packages/zoo/NEWS) 附近更改了 rollmean 的行为:

Changes in Version 1.8-2

  • The rollmean(x, k, ...) method now calls rollapply(x, k, (mean), ...) in case x contains any NAs (as the fast cumsum-based solution in rollmean is not applicable in this case). Analogously for rollsum() and rollmedian(). (Reported by Jan Gorecki.)

所以您看到的行为是在版本 1.7 中;如果你升级到 1.8(正如我猜 @phiver 所做的那样)那么你应该看到你的预期结果。