在r中rollapply(使用max)的结果中NA和-Inf


> library(zoo)
Attaching package: ‘zoo’
The following objects are masked from ‘package:base’:
as.Date, as.Date.numeric
> z  =c(NA,NA,1,2,3)
> rollapply(z,width=2,max,fill=NA,align="r",na.rm=T)
[1]   NA -Inf    1    2    3
Warning message:
In FUN(data[posns], ...) : no non-missing arguments to max; returning -Inf
> 

我知道空集的最大值是-Inf。这在?max.

中提到过这就解释了为什么rollapply在的位置是-Inf。我认为在第二个位置,我们移除了位置1和2上的2个NA,我们留下了一个空集,因此最大值是-Inf。

我的问题是:为什么rollapply在第一个位置NA?

也不应该是-Inf吗?有人能解释一下吗?这背后的原理是什么?

如果可用点少于2点,则根本不运行max,而是输出fill值NA。如果需要-Inf,则指定fill = -Inf或交替使用partial=TRUE,即使可用点少于2点,也会使用max

library(zoo)
z <- c(NA, NA, 1, 2, 3)
rollapplyr(z, 2, max, na.rm = TRUE, fill = -Inf)
## [1] -Inf -Inf    1    2    3
rollapplyr(z, 2, max, na.rm = TRUE, partial = TRUE)
## [1] -Inf -Inf    1    2    3

注意,我们可以通过将-Inf额外传递给max来避免max的警告:

rollapplyr(z, 2, max, -Inf, na.rm = TRUE, fill = -Inf)
## [1] -Inf -Inf    1    2    3

我想我误解了fill参数。它替换了结果中的NA。of rollapply.

> rollapply(z,width=2,max,fill=200,align="r",na.rm=T)
[1]  200 -Inf    1    2    3
Warning message:
In FUN(data[posns], ...) : no non-missing arguments to max; returning -Inf

不是输入中的

我认为它首先会通过填写"假想数据"来计算第一个位置的最大值。在"第0位"by NA andthen做一个max(可能是-Inf)。

相关内容

最新更新