一是beepr這個package,執行後電腦會發出聲音提醒你程式已經跑完。
範例:
library(beepr)
beep(sound=8)
其中,sound後面的數字有1~10,我通常用8因為這會發出超級瑪利跑到關卡最後拉下城堡旗子的過關聲音(下方影片第28秒):
這適用於能在1~2小時內跑完的程式,這樣等輸出指令後就可以切換視窗去做別的事情,然後等聽到這個提示音就可以切換回來R的視窗收output。
若時間更長,你可能會離開辦公室,但又想要知道程式有沒有在你不在的時間跑完,可以用sendmailR這個package。這個package會送訊息到自己指定的email帳號。
範例:
sendmail_options(smtpServer="ASPMX.L.GOOGLE.COM")
sendmail(from="<chienorz@gmail.com>", to="<chienorz@gmail.com>", subject="Work Complete!", msg="Work Complete!")
其中,sendmail_option是用來指定電子郵件的SMTP伺服器。以gmail為例,其SMTP伺服器是ASPMX.L.GOOGLE.COM。
其次,sendmail這個函式是主程式,包含四個主要的option:
- From: 從哪個email address送出
- To: 用哪個email address收件
- subject: 信件主題
- msg: 信件內容
基本上From option指定送出的email address可以亂寫,但To option指定收件的email address必須要有符合的SMTP伺服器設定好在sendmail_options函式裡面。所以如果sendmail_options指定的SMTP伺服器跟To option後面指定的email address所用的SMTP伺服器不同的話,這個函式就不會有作用。subject和msg這兩個option可以隨便打,但我用"Work Complete"是有特殊用意。因為如果電子郵件太多,則R送出來的電子郵件可能會被埋掉,所以我做了一個轉發的設定,就是讓gmail收到以Work Complete的信件時,gmail會自動將其轉發到我的手機簡訊裡面,並且把原本從R送到gmail的郵件給刪除。方法如下:
- 到gmail的設定處點選Forwarding and POP/IMAP標籤。
- 點選Add a forwarding address
- 然後去查如何把手機簡訊轉成email address。以我的Verizon為例,簡訊的email address就是"9碼電話號碼@vtext.com"
- 設定好後,可以建立filter,讓主題有Work Complete字樣的email都主動轉發。
- 最後設定要被轉發的信件該如何處理,有四個選項,我是選擇delete Gmail's copy。
如果你的手機通訊商有SMTP伺服器,就不用設定gmail而是直接從R寄信到手機簡訊裡。以Verizon為例,假設手機號碼是123456789,則手機簡訊的email address是123456789@vtext.com。則程式可以改成:
sendmail(from="<chienorz@gmail.com>", to="<123456789@vtext.com>", subject="Work Complete!", msg="Work Complete!")
但問題是Version沒有給@vtext.com一個SMTP伺服器。網路上雖然可以查到但不能使用,所以才必須使用gmail來轉發。