@@ -61,6 +61,7 @@ all_data.frame = function(x) all(vapply_1b(x, is.data.frame, use.names=FALSE))
6161all_list = function (x ) all(vapply_1b(x , is.list , use.names = FALSE ))
6262equal.lengths = function (x ) length(unique(lengths(x ))) < = 1L
6363equal.nrows = function (x ) length(unique(vapply(x , nrow , 0L ))) < = 1L
64+ anyNAneg = function (x ) anyNA(x ) || any(x < 0L )
6465
6566frollapply = function (X , N , FUN , ... , by.column = TRUE , fill = NA , align = c(" right" ," left" ," center" ), adaptive = FALSE , partial = FALSE , give.names = FALSE , simplify = TRUE , x , n ) {
6667 if (! missing(x )) {
@@ -147,7 +148,7 @@ frollapply = function(X, N, FUN, ..., by.column=TRUE, fill=NA, align=c("right","
147148 nnam = names(N ) # # used for give.names
148149 if (! is.integer(N ))
149150 N = as.integer(N )
150- if (anyNA (N ))
151+ if (anyNAneg (N ))
151152 stopf(" 'N' must be non-negative integer values (>= 0)" )
152153 nn = length(N ) # # top level loop for vectorized n
153154 } else {
@@ -158,7 +159,7 @@ frollapply = function(X, N, FUN, ..., by.column=TRUE, fill=NA, align=c("right","
158159 stopf(" length of integer vector(s) provided as list to 'N' argument must be equal to number of observations provided in 'X'" )
159160 if (! is.integer(N ))
160161 N = as.integer(N )
161- if (anyNA (N ))
162+ if (anyNAneg (N ))
162163 stopf(" 'N' must be non-negative integer values (>= 0)" )
163164 nn = 1L
164165 N = list (N )
@@ -172,7 +173,7 @@ frollapply = function(X, N, FUN, ..., by.column=TRUE, fill=NA, align=c("right","
172173 stopf(" 'N' must be an integer vector or list of integer vectors" )
173174 if (! all(vapply_1b(N , is.integer , use.names = FALSE )))
174175 N = lapply(N , as.integer )
175- if (any(vapply_1b(N , anyNA , use.names = FALSE )))
176+ if (any(vapply_1b(N , anyNAneg , use.names = FALSE )))
176177 stopf(" 'N' must be non-negative integer values (>= 0)" )
177178 nn = length(N )
178179 nnam = names(N )
0 commit comments