我們使用谷歌日歷預訂幾臺機器,我正在制作使用圖表。我有一條線來提取日歷的標題以進行繪圖,但它似乎相當長且笨重,使用 grep 兩次(一次用于日歷名稱的索引,一次用于提取日歷的名稱)。我不想假設日歷的名稱總是在同一個索引處。日歷資料以 .ics 檔案的形式下載,并使用 tidyverse 的 read_lines() 匯入。有沒有更簡潔的方法來獲取日歷名稱?
> calendar_raw[1:20]
[1] "BEGIN:VCALENDAR"
[2] "PRODID:-//Google Inc//Google Calendar 70.9054//EN"
[3] "VERSION:2.0"
[4] "CALSCALE:GREGORIAN"
[5] "METHOD:PUBLISH"
[6] "X-WR-CALNAME:Calendar Name"
[7] "X-WR-TIMEZONE:America/Los_Angeles"
[8] "X-WR-CALDESC:Schedule for the machine"
[9] "BEGIN:VEVENT"
[10] "DTSTART:20180223T210000Z"
[11] "DTEND:20180223T220000Z"
[12] "DTSTAMP:20220421T162943Z"
[13] "UID:[email protected]"
[14] "CREATED:20180222T195641Z"
[15] "DESCRIPTION:"
[16] "LAST-MODIFIED:20180222T200100Z"
[17] "LOCATION:"
[18] "SEQUENCE:0"
[19] "STATUS:CONFIRMED"
[20] "SUMMARY:Username"
> gsub("X-WR-CALNAME:(.*$)","\\1", calendar_raw[grep("X-WR-CALNAME:",calendar_raw)])
[1] "Calendar Name"
uj5u.com熱心網友回復:
您仍然需要grep包含的字符向量X-WR-CALNAME:然后將其洗掉,因此您所擁有的一切都很好。
你能做的是
- 使用
sub,因為您只使用單個搜索和替換操作 - 您不需要 a
$在您的正則運算式中,并且您真的不需要在X-WR-CALNAME:稍后使用反向參考恢復之后消耗字串的其余部分\1。如果一定要留下,就不要消耗它,它不會被sub操作觸及。
您可以因此使用
sub("^X-WR-CALNAME:", "", calendar_raw[grep("X-WR-CALNAME:", calendar_raw)])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460968.html
