Здесь мы исследуем различные механизмы уведомлений R и рассмотрим плюсы и минусы каждого из них.
Представьте себе запуск алгоритма кластеризации, выполнение которого занимает 4–5 часов, либо вы ждете его завершения, либо продолжаете проверять каждый час с увеличивающейся частотой, поскольку ваше терпение иссякает, чтобы увидеть, завершен ли процесс.
Представьте себе весь такой сценарий, а затем представьте себе механизм уведомления, который будет держать вас в курсе прогресса или уведомлять вас после его завершения.
Мы здесь, чтобы обсудить это.
Давайте начнем эту короткую статью с самого простого из всех механизмов уведомления, ласково называемого «beepr».
звуковой сигнал
Как следует из названия, он просто воспроизводит звук после вызова функции. Код выглядит так:
library(beepr) beep()
Вы также можете выбрать один из 10 звуков, который вы хотите. Это довольно простой и удобный пакет, для более подробной информации о доступных звуках вы можете обратиться здесь.
RPushbullet
Это мой личный фаворит, RPushbullet использует API pushbullet для отправки уведомлений на разные устройства. Это может быть что угодно, браузер/андроид/ios, если на вашем устройстве установлен pushbullet, все в порядке.
Step 1: Install pushbullet app in your phone/browser Step 2: Access pushbullet settings from your browser and get the token/key for your account. Step 3: Run library(RPushbullet) pbSetup() Step 4: Once you run the above step you will be asked to enter the token and select the registered device in the r console itself, do that. Step 5: Run a similar code with your message and you are done pbPost("note", "Clustering Completed", "Clustering completed in 4hrs 13mins")
Это не просто заметки, вы также можете отправлять ссылки, файлы в виде сообщений, и уведомления будут отображаться на зарегистрированных устройствах.
Обычно это тот, который я нахожу наиболее полезным. Его невероятно легко настроить, а также это самое практичное из всех решений, и не имеет значения, работает ли ваш код на сервере или на рабочем столе.
notifier
Это пакет уведомлений на рабочем столе, который можно использовать для отправки уведомлений на рабочем столе из R в macOS, Windows и Linux. О реализации этого в macOS есть отличная статья здесь. Но, к сожалению, я не мог заставить это работать на моей машине с Windows 10, всегда возникала та или иная ошибка. Но шаги довольно просты, и дайте мне знать, если у вас это получится.
#install.packages("devtools") if devtools is not installed devtools::install_github("gaborcsardi/notifier") library(notifier) #composing the first notification message notify( title = "Here goes the Title", msg = c("Hello","World") )
Это изображение для macOS и взято отсюда. Это тоже довольно удобный способ получать уведомления в среде рабочего стола, но он не будет полезен, если ваш код работает на сервере.
почтаR
С помощью пакета mailR вы можете отправлять электронную почту из R. Однако я не предпочитаю использовать это, вы должны передать идентификатор пользователя/пароль в сценарии, что не делает его очень безопасным. Но все же вас интересует приведенный ниже код.
install.packages(“mailR”) library(mailR) send.mail(from = “[email protected]”, to = c(“[email protected]”, “Recipient 2 <[email protected]>”), replyTo = c(“Reply to someone else <[email protected]>”), subject = “Subject of the email”, body = “Body of the email”, smtp = list(host.name = “smtp.gmail.com”, port = 465, user.name = “gmail_username”, passwd = “password”, ssl = TRUE), authenticate = TRUE, send = TRUE)
Вы можете обратиться к этой статье для получения более подробной информации и решения проблемы с менее безопасным приложением Google, если это необходимо.
RDCOMClient — Outlook
Это еще один пакет, который особенно полезен, если вы привязаны к мировоззрению в повседневной жизни. Это смехотворно легко настроить и начать работу
library(RDCOMClient) ## init com api OutApp <- COMCreate("Outlook.Application") ## create an email outMail = OutApp$CreateItem(0) ## configure email parameter outMail[["To"]] = "[email protected]" outMail[["subject"]] = "some subject" outMail[["body"]] = "some body" ## send it outMail$Send()
#edit to add attachmentoutMail[["Attachments"]]$Add(path_to_attch_file)
#edit to change “from” (send from secondary mailbox)outMail[["SentOnBehalfOfName"]] = "[email protected]"
С дополнительным преимуществом отправки вложения и отправки из другого почтового ящика это полезно в самых разных ситуациях.
На данный момент это все, теперь с ними будет легко реализовать уведомления в R и, надеюсь, немного облегчить нашу жизнь.