There are a few ways you can do this using the clock
package.
There is a sequencing function like many other answers, however with this function you have a finer control over the sequencing:
library(clock)
# every day between two dates
date_seq(from = Sys.Date(), to = Sys.Date() + 5, by = duration_days(1))
# [1] "2024-03-07" "2024-03-08" "2024-03-09" "2024-03-10" "2024-03-11" "2024-03-12"
# every other day between two dates
date_seq(from = Sys.Date(), to = Sys.Date() + 5, by = duration_days(2))
# [1] "2024-03-07" "2024-03-09" "2024-03-11"
# every 3rd month until total size is 3
# can do arithmetic in duration function and
# provide explicit resolution to invalid dates
date_seq(from = date_build(2024, 3, 31), by = duration_months(sqrt(9)),
total_size = 3, invalid = "previous-day")
# [1] "2024-03-31" "2024-06-30" "2024-09-30"
There is also a set of spanning functions that will span from the min and max of a vector:
x <- date_build(2024, c(3, 3, 3), c(7, 8, 11))
# [1] "2024-03-07" "2024-03-08" "2024-03-11"
# spans from min 2024-03-07 to max 2024-03-11
date_spanning_seq(x)
[1] "2024-03-07" "2024-03-08" "2024-03-09" "2024-03-10" "2024-03-11"
date_spanning_seq
uses day precision, so there is not as much control. calendar_spanning_seq
is available where you can provide more control over how to span.
seq.Date
even. I was not aware of its existence. – Ginelle