diff --git a/NEWS b/NEWS index d9d80a2..0a58c44 100644 --- a/NEWS +++ b/NEWS @@ -3,7 +3,8 @@ - seas() works within forking parallization (e.g., mclapply) #276 Thanks to @jonlachmann! - annual series are read correctly #264 - - January first can be used in genhol() #261 + - Jan 1 can be used in genhol() #261 + - genhol() produces correct result in 1931 #193 1.8.4.2 (unreleased) diff --git a/R/genhol.R b/R/genhol.R index 7018f41..f312190 100644 --- a/R/genhol.R +++ b/R/genhol.R @@ -214,14 +214,14 @@ genhol <- function(x, start = 0, end = 0, frequency = 12, center = "none"){ # "ts" object with each date in the right period event.st.ts <- z.ts - event.st.ts[cut(event.st.added, by, labels = F)] <- as.character(event.st) + event.st.ts[cut(event.st.added, by, labels = FALSE)] <- as.character(event.st) event.en.ts <- z.ts - event.en.ts[cut(event.en.added, by, labels = F)] <- as.character(event.en) + event.en.ts[cut(event.en.added, by, labels = FALSE)] <- as.character(event.en) # number of days - days <- pmin((period.en), as.Date(as.character(event.en.ts)), na.rm = T) - - pmax(period.st, as.Date(as.character(event.st.ts)), na.rm = T) + 1 + days <- pmin((period.en), as.Date(as.character(event.en.ts)), na.rm = TRUE) - + pmax(period.st, as.Date(as.character(event.st.ts)), na.rm = TRUE) + 1 # filling NAs with start and end dates fillNA <- function(x){ @@ -240,8 +240,11 @@ genhol <- function(x, start = 0, end = 0, frequency = 12, center = "none"){ # drop drop <- is.na(event.st.ts) & is.na(event.en.ts) + fill.na.event.en.ts <- fillNA(event.en.ts) + fill.na.event.en.ts[is.na(fill.na.event.en.ts)] <- as.Date("0001-01-01") + # dont drop these (start value larger than end value) - drop[fillNA(event.st.ts) > fillNA(event.en.ts)] <- FALSE + drop[fillNA(event.st.ts) > fill.na.event.en.ts] <- FALSE days[drop] <- 0 z.raw <- ts(c(days), start = start(z.ts), frequency = frequency(z.ts)) diff --git a/tests/testthat/test-issues.R b/tests/testthat/test-issues.R index 406d5d2..dceba32 100644 --- a/tests/testthat/test-issues.R +++ b/tests/testthat/test-issues.R @@ -77,7 +77,8 @@ test_that("January first can be used in genhol() #261", { }) - - - +test_that("genhol() produces correct result in 1931 #193", { + ans <- genhol(easter, start = -46, end = 0, frequency = 12) + expect_equal(sum(abs(rowSums(matrix(ans, ncol = 12, byrow = TRUE)) - 1)), 0) +})