Skip to content

Commit 074ed4a

Browse files
committed
fix
1 parent cd304cd commit 074ed4a

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

R/methods-epi_archive.R

+8-6
Original file line numberDiff line numberDiff line change
@@ -113,19 +113,21 @@ epix_as_of <- function(x, version, min_time_value = -Inf, all_versions = FALSE,
113113
if (all_versions) {
114114
# epi_archive is copied into result, so we can modify result directly
115115
result <- epix_truncate_versions_after(x, version)
116-
result$DT <- result$DT[time_value >= .min_time_value, ] # nolint: object_usage_linter
116+
if (!identical(.min_time_value, -Inf)) {
117+
# See below for why we need this branch.
118+
result$DT <- result$DT[time_value >= .min_time_value, ] # nolint: object_usage_linter
119+
}
117120
return(result)
118121
}
119122

120123
# Make sure to use data.table ways of filtering and selecting
121-
if (identical(.min_time_value, -Inf)) {
124+
as_of_epi_df <- if (identical(.min_time_value, -Inf)) {
122125
# This branch is needed for `epix_as_of` to work with `yearmonth` time type
123126
# to avoid time_value > .min_time_value, which is NA for `yearmonth`.
124-
filter_mask <- version <= .version
127+
x$DT[version <= .version, ]
125128
} else {
126-
filter_mask <- time_value >= .min_time_value & version <= .version
127-
}
128-
as_of_epi_df <- x$DT[filter_mask, ] %>% # nolint: object_usage_linter
129+
x$DT[time_value >= .min_time_value & version <= .version, ]
130+
} %>% # nolint: object_usage_linter
129131
unique(by = c("geo_value", "time_value", other_keys), fromLast = TRUE) %>%
130132
tibble::as_tibble() %>%
131133
dplyr::select(-"version") %>%

tests/testthat/_snaps/methods-epi_archive.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# current_time_value works as expected
1+
# epix_as_of_now works as expected
22

33
Code
4-
df %>% as_epi_archive() %>% current_time_value()
4+
attr(df %>% as_epi_archive() %>% epix_as_of_now(), "metadata")$as_of
55
Condition
66
Error in `current_time_value()`:
77
! Unable to determine the latest time value for an integer time type. Use `epix_as_of` instead.

0 commit comments

Comments
 (0)