align 在rollmean 和rollapply 中具有相同的含义,但在rollapply 中更容易看到,因为使用输入数据1:8 和窗口宽度3 并使用toString 而不是@987654326 @ 作为应用函数,我们可以显示在每个点使用了哪些索引。
对齐是指当我们遍历输入的连续位置时,窗口的哪个边缘(或中心)与当前点对齐。
因此使用长度为 3 的窗口,它使用当前位置的值和 align = "right" 的前 2 个位置。例如,对于输入 1:8 的第一个位置,没有右端位于第一个位置的 3 个值的窗口,因此我们得到一个 NA。对于输入的第二个位置,到该点只有 2 个位置,所以再次没有右端位于当前位置的 3 个位置的窗口,所以我们再次得到 NA。对于第三个位置,有三个位置以位置 3 结尾,因此我们将 c(1, 2, 3) 传递给 toString,它们的格式如下所示。对于第 4 个位置,还有 3 个位置的右端位于第 4 位,因此我们得到 2、3、4 等等,如下面代码中标记为 ## 的第一行所示。
对于align = "center",它将窗口的中心放置在当前位置,因此它使用先前值、当前值和下一个值。
对于align = "left",它将窗口的左端放在当前位置,因此它使用当前值和接下来的 2 个值。
library(zoo)
x <- 1:8
rollapply(x, 3, toString, align = "right", fill = NA)
## [1] NA NA "1, 2, 3" "2, 3, 4" "3, 4, 5" "4, 5, 6" "5, 6, 7" "6, 7, 8"
rollapply(x, 3, toString, align = "center", fill = NA)
## [1] NA "1, 2, 3" "2, 3, 4" "3, 4, 5" "4, 5, 6" "5, 6, 7" "6, 7, 8" NA
rollapply(x, 3, toString, align = "left", fill = NA)
## [1] "1, 2, 3" "2, 3, 4" "3, 4, 5" "4, 5, 6" "5, 6, 7" "6, 7, 8" NA NA
请注意,如果align= 未指定并且有包装器rollmeanr 和rollapplyr(最后注意r),则align = "center" 是默认值,默认为align = "right"。