Есть ли способ сделать R звуковой сигнал / воспроизвести звук в конце скрипта?

Когда я запускаю R-скрипты, я делаю что-то еще на другом рабочем столе. Если я не проверю часто, я никогда не знаю, когда что-то закончится. Есть ли способ вызвать звуковой сигнал (например, системный звуковой сигнал) или заставить R воспроизвести звук или уведомить рычание через некоторый код в конце моего сценария?

alarm() 

Функция будильника.

У меня есть пакет ( beepr ) с единственной целью – сделать звуки уведомлений в R, которые должны работать кросс-платформенными. Для установки beepr выполните следующие действия:

 install.packages("beepr") library(beepr) beep() 

Дополнительная информация в github: https://github.com/rasmusab/beepr

На MacOSX вы можете позволить компьютеру говорить:

 system("say Just finished!") 

и вы также можете изменить искусственный голос, который будет говорить:

 system("say -v Kathy Just finished!") 

Вы можете выбрать любой голос, ansible на вашем компьютере. На Yosemite вы можете видеть, какие голоса установлены в Системных настройках -> Дикция и речь -> Текст в речь .

У вас должно получиться это чирикать, когда это будет сделано: http://cran.r-project.org/web/packages/twitteR/index.html

alarm не работает на моей машине Windows, поэтому я создал функцию, которая действительно создает шум.

 beep <- function(n = 3){ for(i in seq(n)){ system("rundll32 user32.dll,MessageBeep -1") Sys.sleep(.5) } } 

Это явно может работать только на Windows, но я не гарантирую, что он будет работать даже на любом компьютере под управлением Windows. Я тестировал его только на своей машине, но решил, что опубликую его на случай, если у кого-то будет такая же проблема, как и в случае alarm .

cat (‘Hello world! \ a’)

Не только это, вы также можете поместить некоторую эпическую музыку с Youtube, когда программа будет завершена. (Для Ubuntu / Debian 🙂

 system("xdg-open 'http://www.youtube.com/watch?v=9jK-NcRmVcw'") 

Используйте shell.exec("url") чтобы открыть какой-либо клип YouTube в Windows.

У меня есть терминальный уведомитель, установленный на моем Mac, чтобы получать уведомления о рабочем столе из командной строки. Затем вы можете завершить вызов команды system() следующим образом (измените путь, очевидно):

 notify <- function(msgString='Message from R', titleString='Message from R', speakIt=FALSE) { cmd <- paste('~/terminal-notifier/terminal-notifier.app/Contents/MacOS/terminal-notifier -message ', '"', msgString, '" -title "', titleString, '"', sep='') system(cmd) if (speakIt) { system(paste('say', msgString)) } } 

Вы можете вызвать функцию, подобную этой

 notify("R is done", "Message from R", speakIt=TRUE) 

чтобы получить такое сообщение:

введите описание изображения здесь

Обновление: включена команда VLC.

Или, если вы используете дистрибутив GNU / Linux и имеете черный список в модуле pcspkr (динамик ПК всегда раздражал меня), попробуйте комбинировать system с некоторыми аудиторскими / визуальными уведомлениями, например

 system("aplay -t wav /usr/share/sounds/phone.wav") # for auditive bell (an I mean it literary) system("zenity --title=\"R script info\" --text=\"Script has finished with zero exit status\" --info") # for GTK dialog 

Вы можете проверить руководство по zenity, если вы предпочитаете оповещение в, скажем, области уведомлений … Но с помощью system функции вы можете сделать практически все: отправить электронное письмо, запустить другой скрипт, перезагрузить компьютер, sudo rm -rf *.* и т. д. что-нибудь … и я имею в виду.

Но это стоит только в том случае, если вы используете дистрибутив GNU / Linux (или UNIX), иначе придерживаетесь определенных команд Windows, хотя в этом случае я не могу дать вам много информации …

Как насчет чего-то разумного ОС, независимого от ОС с графическими интерфейсами и веб-браузерами? Он даже работает на RStudio Server!

browseURL('https://www.youtube.com/watch?v=QH2-TGUlwu4')

Вдохновленный beepr , это функция, которую я сейчас использую для таких проблем: D

 work_complete <- function() { cat("Work complete. Press esc to sound the fanfare!!!\n") on.exit(beepr::beep(3)) while (TRUE) { beepr::beep(4) Sys.sleep(1) } } 

взгляните на этот пакет: RPushBullet

Интерфейс R для службы обмена сообщениями Pushbullet, который обеспечивает быстрое и эффективное оповещение (и передачу файлов) между компьютерами, телефонами и планшетами

RPushbullet полностью бесплатный и многоплатформенный. Что касается вашего вопроса, вы можете использовать эту библиотеку для отправки Push в свой браузер, но, очевидно, это становится потрясающе, когда вам нужно что-то, чем вы можете уведомить вас, пока вас нет. Более того, создатель пакета R является тем же самым известным Rcpp, Dirk Eddelbuettel. Я бы сказал, что это стоит того!

Как насчет какой-то музыки?

 shell.exec("foo/Born.to.be.wild.mp3") 

Вы можете использовать команду notify-send :

 system("notify-send \"R script finished running\"") 
  • Эффективно конвертировать обратную косую черту в косую черту в R
  • Манекены переменных из строковой переменной
  • Как назначить значения динамическим именам переменных
  • если / else строит внутренние и внешние функции
  • Добавить переменную в кадр данных, содержащий максимальное значение каждой строки
  • Процент% в%
  • Извлечение строк для первого вхождения переменной в фрейм данных
  • R Ошибка в операторе x $ ed: $ недействительна для атомных векторов
  • Глобальные и локальные переменные в R
  • Интерпретация "имеет длину> 1" предупреждение от функции `if`
  • Каковы форматы «стандартной четкой даты»?
  • Давайте будем гением компьютера.