Skip to content

Commit 59c174a

Browse files
committed
also test for negative n
1 parent faae743 commit 59c174a

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

R/frollapply.R

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ all_data.frame = function(x) all(vapply_1b(x, is.data.frame, use.names=FALSE))
6161
all_list = function(x) all(vapply_1b(x, is.list, use.names=FALSE))
6262
equal.lengths = function(x) length(unique(lengths(x))) <= 1L
6363
equal.nrows = function(x) length(unique(vapply(x, nrow, 0L))) <= 1L
64+
anyNAneg = function(x) anyNA(x) || any(x < 0L)
6465

6566
frollapply = 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

Comments
 (0)