calendar allows you to read-in ‘ical files’ (which
typically have the .ics
filetype) with
ic_read()
. However, often it’s useful to create your own
ical
object from scratch. The purpose of this vignette is
to show how, with reference to a real-world application: creating a
timetable for a new module.
It assumes you’ve installed the package following instructions in the README and have attached it as follows:
The building blocks of most calendars the event. All events have a start point and an end point (unless they are an all day event) and a summary description. As shown in the example below, they also tend to contain other fields.
# key:value pairs in an ical example:
ic_list(ical_example)[[1]]
#> [1] "DTSTART:20180809T160000Z"
#> [2] "DTEND:20180809T163000Z"
#> [3] "DTSTAMP:20180810T094100Z"
#> [4] "UID:1119ejg4vug5758527atjcrqj3@google.com"
#> [5] "CREATED:20180807T133712Z"
#> [6] "DESCRIPTION:\\n"
#> [7] "LAST-MODIFIED:20180807T133712Z"
#> [8] "LOCATION:"
#> [9] "SEQUENCE:0"
#> [10] "STATUS:CONFIRMED"
#> [11] "SUMMARY:ical programming mission"
#> [12] "TRANSP:OPAQUE"
Fortunately you don’t need to specify all of these when creating events because some will be created manually and some are not necessary. Events can be created as follows (this one creates a 5 day trip):
library(calendar)
s = as.POSIXct("2019-01-12")
e = s + 60^2 * 24 *5
event = ic_event(start = s, end = e , summary = "Research trip")
event
#> # A tibble: 1 × 4
#> UID DTSTART DTEND SUMMARY
#> <chr> <dttm> <dttm> <chr>
#> 1 ical-c89699b7-9806-48b1-a181-… 2019-01-12 00:00:00 2019-01-17 00:00:00 Resear…
class(event)
#> [1] "ical" "tbl_df" "tbl" "data.frame"
ic_character(event)
#> [1] "BEGIN:VCALENDAR"
#> [2] "PRODID:-//ATFutures/ical //EN"
#> [3] "VERSION:2.0"
#> [4] "CALSCALE:GREGORIAN"
#> [5] "METHOD:PUBLISH"
#> [6] "BEGIN:VEVENT"
#> [7] "UID:ical-c89699b7-9806-48b1-a181-f793d44b5db2"
#> [8] "DTSTART:20190112T000000"
#> [9] "DTEND:20190117T000000"
#> [10] "SUMMARY:Research trip"
#> [11] "END:VEVENT"
#> [12] "END:VCALENDAR"