library(lubridate, warn.conflicts = F)
library(gs)
library(magrittr)

Here are the examples and how they would be run in gs.

In most of the example (unless otherwise stated) the start date is 1997-09-02. At 9am.

Daily for 10 occurrences:

Daily until December 24, 1997:

on_every("day", starting = ymd("1997-09-02")) %>% 
  only_occur(on_or_after(ymd("1997-09-02"))) %>% 
  only_occur(before(dmy("24-12-1997"))) %>% 
  schedule_days() 
#>   [1] "1997-09-02" "1997-09-03" "1997-09-04" "1997-09-05" "1997-09-06"
#>   [6] "1997-09-07" "1997-09-08" "1997-09-09" "1997-09-10" "1997-09-11"
#>  [11] "1997-09-12" "1997-09-13" "1997-09-14" "1997-09-15" "1997-09-16"
#>  [16] "1997-09-17" "1997-09-18" "1997-09-19" "1997-09-20" "1997-09-21"
#>  [21] "1997-09-22" "1997-09-23" "1997-09-24" "1997-09-25" "1997-09-26"
#>  [26] "1997-09-27" "1997-09-28" "1997-09-29" "1997-09-30" "1997-10-01"
#>  [31] "1997-10-02" "1997-10-03" "1997-10-04" "1997-10-05" "1997-10-06"
#>  [36] "1997-10-07" "1997-10-08" "1997-10-09" "1997-10-10" "1997-10-11"
#>  [41] "1997-10-12" "1997-10-13" "1997-10-14" "1997-10-15" "1997-10-16"
#>  [46] "1997-10-17" "1997-10-18" "1997-10-19" "1997-10-20" "1997-10-21"
#>  [51] "1997-10-22" "1997-10-23" "1997-10-24" "1997-10-25" "1997-10-26"
#>  [56] "1997-10-27" "1997-10-28" "1997-10-29" "1997-10-30" "1997-10-31"
#>  [61] "1997-11-01" "1997-11-02" "1997-11-03" "1997-11-04" "1997-11-05"
#>  [66] "1997-11-06" "1997-11-07" "1997-11-08" "1997-11-09" "1997-11-10"
#>  [71] "1997-11-11" "1997-11-12" "1997-11-13" "1997-11-14" "1997-11-15"
#>  [76] "1997-11-16" "1997-11-17" "1997-11-18" "1997-11-19" "1997-11-20"
#>  [81] "1997-11-21" "1997-11-22" "1997-11-23" "1997-11-24" "1997-11-25"
#>  [86] "1997-11-26" "1997-11-27" "1997-11-28" "1997-11-29" "1997-11-30"
#>  [91] "1997-12-01" "1997-12-02" "1997-12-03" "1997-12-04" "1997-12-05"
#>  [96] "1997-12-06" "1997-12-07" "1997-12-08" "1997-12-09" "1997-12-10"
#> [101] "1997-12-11" "1997-12-12" "1997-12-13" "1997-12-14" "1997-12-15"
#> [106] "1997-12-16" "1997-12-17" "1997-12-18" "1997-12-19" "1997-12-20"
#> [111] "1997-12-21" "1997-12-22" "1997-12-23"

Every other day - forever:

Every 10 days, 5 occurrences:

Every day in January, for 3 years:

Weekly for 10 occurrences:

Weekly until December 24, 1997:

Every other week - forever:

Weekly on Tuesday and Thursday for five weeks:

There is a difference here. The gs result stretches one further than iCal to include “1997-10-07”.

Every other week on Monday, Wednesday, and Friday until December 24, 1997, starting on Monday, September 1, 1997:

Every other week on Tuesday and Thursday, for 8 occurrences:

Monthly on the first Friday for 10 occurrences:

Monthly on the first Friday until December 24, 1997:

Every other month on the first and last Sunday of the month for 10 occurrences:

Monthly on the second-to-last Monday of the month for 6 months:

start_date <- ymd("1997-09-02")

on_nth(-2, on_wday("Mon"), within_given = "month") %>% 
  only_occur(on_or_after(start_date)) %>% 
  only_occur(on_or_before(start_date + months(6))) %>% 
  schedule_days(from = 1997, to = 1998)
#> [1] "1997-09-22" "1997-10-20" "1997-11-17" "1997-12-22" "1998-01-19"
#> [6] "1998-02-16"

Monthly on the third-to-the-last day of the month, forever:

Monthly on the 2nd and 15th of the month for 10 occurrences:

Monthly on the first and last day of the month for 10 occurrences:

Every 18 months on the 10th thru 15th of the month for 10 occurrences:

Every Tuesday, every other month:

Yearly in June and July for 10 occurrences:

Every other year on January, February, and March for 10 occurrences:

Every third year on the 1st, 100th, and 200th day for 10 occurrences:

Every 20th Monday of the year, forever:

on_nth(20, on_wday("Mon"), within_given = "year") %>% 
  schedule_days(from = 1997, to = 1999)
#> [1] "1997-05-19" "1998-05-18" "1999-05-17"

Monday of week number 20 (where the default start of the week is Monday), forever:

Every Thursday in March, forever:

Every Thursday, but only during June, July, and August, forever:

Every Friday the 13th, forever:

The first Saturday that follows the first Sunday of the month, forever:

Every 4 years, the first Tuesday after a Monday in November, forever (U.S. Presidential Election day):

The third instance into the month of one of Tuesday, Wednesday, or Thursday, for the next 3 months:

The second-to-last weekday of the month:

Every 3 hours from 9:00 AM to 5:00 PM on a specific day:

Every 15 minutes for 6 occurrences:

Every hour and a half for 4 occurrences:

Every 20 minutes from 9:00 AM to 4:40 PM every day:

There are a few examples I need to express in words.