lubridate имеет функцию интервала. См .: https://cran.r-project.org/web/packages/lubridate/vignettes/lubridate.html
Пример
library(lubridate)
t <- as.POSIXct("2019-01-01", tz = "UTC")
n <- 16
arrive <- seq(t, by = "month", length.out = n)
depart <- tail(seq(t, by = "month", length.out = n+2), -2)
interval(arrive, depart)
Результат
[1] 2019-01-01 UTC--2019-03-01 UTC 2019-02-01 UTC--2019-04-01 UTC
[3] 2019-03-01 UTC--2019-05-01 UTC 2019-04-01 UTC--2019-06-01 UTC
[5] 2019-05-01 UTC--2019-07-01 UTC 2019-06-01 UTC--2019-08-01 UTC
[7] 2019-07-01 UTC--2019-09-01 UTC 2019-08-01 UTC--2019-10-01 UTC
[9] 2019-09-01 UTC--2019-11-01 UTC 2019-10-01 UTC--2019-12-01 UTC
[11] 2019-11-01 UTC--2020-01-01 UTC 2019-12-01 UTC--2020-02-01 UTC
[13] 2020-01-01 UTC--2020-03-01 UTC 2020-02-01 UTC--2020-04-01 UTC
[15] 2020-03-01 UTC--2020-05-01 UTC 2020-04-01 UTC--2020-06-01 UTC
Или, без lubridate, простая вставка создаст векторы символов в точности как вы описываете
paste(format(arrive, "%F"), format(depart, "%F"), sep = " ")
Результат
[1] "2019-01-01 2019-03-01" "2019-02-01 2019-04-01" "2019-03-01 2019-05-01"
[4] "2019-04-01 2019-06-01" "2019-05-01 2019-07-01" "2019-06-01 2019-08-01"
[7] "2019-07-01 2019-09-01" "2019-08-01 2019-10-01" "2019-09-01 2019-11-01"
[10] "2019-10-01 2019-12-01" "2019-11-01 2020-01-01" "2019-12-01 2020-02-01"
[13] "2020-01-01 2020-03-01" "2020-02-01 2020-04-01" "2020-03-01 2020-05-01"
[16] "2020-04-01 2020-06-01"