Здесь мы исследуем различные механизмы уведомлений 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 attachment
outMail[["Attachments"]]$Add(path_to_attch_file)
#edit to change “from” (send from secondary mailbox)
outMail[["SentOnBehalfOfName"]] = "[email protected]"

С дополнительным преимуществом отправки вложения и отправки из другого почтового ящика это полезно в самых разных ситуациях.

На данный момент это все, теперь с ними будет легко реализовать уведомления в R и, надеюсь, немного облегчить нашу жизнь.