as_phinterval() converts a lubridate::interval(), Date, POSIXct, or POSIXlt
vector into an equivalent <phinterval> vector.
Usage
as_phinterval(x, ...)
# Default S3 method
as_phinterval(x, ...)
# S3 method for class 'Interval'
as_phinterval(x, ...)Details
Negative intervals (where start > end) are standardized to positive intervals
via lubridate::int_standardize().
Datetime vectors (Date, POSIXct, POSIXlt) are converted into instantaneous intervals where the start and end are identical.
Spans with partially missing endpoints (e.g., interval(NA, end) or
interval(start, NA)) are converted to a fully NA element.
Examples
# Convert Interval vector
years <- interval(
start = as.Date(c("2021-01-01", "2023-01-01")),
end = as.Date(c("2022-01-01", "2024-01-01"))
)
as_phinterval(years)
#> <phinterval<UTC>[2]>
#> [1] {2021-01-01--2022-01-01} {2023-01-01--2024-01-01}
# Negative intervals are standardized
negative <- interval(as.Date("2000-10-11"), as.Date("2000-10-01"))
as_phinterval(negative)
#> <phinterval<UTC>[1]>
#> [1] {2000-10-01--2000-10-11}
# Partially missing endpoints become fully NA
partial_na <- interval(NA, as.Date("1999-08-02"))
as_phinterval(partial_na)
#> <phinterval<UTC>[1]>
#> [1] <NA>
# Datetime vectors become instantaneous intervals
as_phinterval(as.Date(c("2000-10-11", "2001-05-03")))
#> <phinterval<UTC>[2]>
#> [1] {2000-10-11--2000-10-11} {2001-05-03--2001-05-03}
