Когда я запускаю R-скрипты, я делаю что-то еще на другом рабочем столе. Если я не проверю часто, я никогда не знаю, когда что-то закончится. Есть ли способ вызвать звуковой сигнал (например, системный звуковой сигнал) или заставить R воспроизвести звук или уведомить рычание через некоторый код в конце моего script?
Есть ли способ сделать R звуковой сигнал/воспроизвести звук в конце script?
Ответ 1
alarm()
Функция тревоги.
Ответ 2
У меня есть пакет (beepr
) с единственной целью сделать звуки уведомлений в R, которые должны работать кросс-платформенными. Для установки beepr и создания звука выполните следующее:
install.packages("beepr")
library(beepr)
beep()
Дополнительная информация в github: https://github.com/rasmusab/beepr
Ответ 3
В MacOSX вы можете позволить компьютеру говорить:
system("say Just finished!")
и вы также можете изменить искусственный голос, который будет говорить:
system("say -v Kathy Just finished!")
Вы можете выбрать любой голос, доступный на вашем компьютере. На Yosemite вы можете видеть, какие голоса установлены в Системных настройках → Дикция и речь → Текст в речь.
Ответ 4
У вас должно получиться твит, когда это будет сделано: http://cran.r-project.org/web/packages/twitteR/index.html
Ответ 5
alarm
не работает на моей машине Windows, поэтому я создал функцию, которая действительно создает шум.
beep <- function(n = 3){
for(i in seq(n)){
system("rundll32 user32.dll,MessageBeep -1")
Sys.sleep(.5)
}
}
Это явно может работать только на Windows, но я не гарантирую, что он будет работать даже на любом компьютере под управлением Windows. Я тестировал его только на своей машине, но я решил, что опубликую его на случай, если у кого-то будет такая же проблема с alarm
, что я и делаю.
Ответ 6
cat ('Hello world!\a')
Ответ 7
Не только это, вы также можете поместить некоторую эпическую музыку с Youtube, когда программа будет завершена. (Для Ubuntu/Debian:)
system("xdg-open 'http://www.youtube.com/watch?v=9jK-NcRmVcw'")
Ответ 8
ОБНОВИТЬ:
В macOS 10.9 (Mavericks) и более поздних версиях вы можете отправлять уведомления, используя простой AppleScript:
theTitle <- "A Title"
theMsg <- "A message here"
cmd <- paste("osascript -e ", "'display notification ", '"', theMsg, '"', ' with title ', '"', theTitle, '"', "'", sep='')
system(cmd)
Это устраняет необходимость устанавливать terminal-notifier
, на который ссылаются ниже.
-
На моем 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 say
.
Ответ 9
Используйте shell.exec("url")
, чтобы открыть какой-либо клип YouTube в Windows
Ответ 10
Как насчет чего-то достаточно независимого от ОС для ОС с графическим интерфейсом и веб-браузерами? Это даже работает на RStudio Server!
browseURL('https://www.youtube.com/watch?v=QH2-TGUlwu4')
Ответ 11
Или, если вы используете дистрибутив 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
, вы можете сделать почти что угодно: отправить электронное письмо, запустить еще один script, перезагрузить компьютер, sudo rm -rf *.*
и т.д. что-нибудь... и я имею в виду это.
Но это стоит только IF, вы используете дистрибутив GNU/Linux (или UNIX), в противном случае придерживаетесь определенных команд Windows, хотя в этом случае я не могу дать вам много информации...
Ответ 12
взгляните на этот пакет: RPushBullet
Интерфейс R для службы обмена сообщениями Pushbullet, которая обеспечивает быстрое и эффективные уведомления (и передача файлов) между компьютерами, телефоны и планшеты
RPushbullet полностью свободен и имеет многоплатформенную платформу. Что касается вашего вопроса, вы можете использовать эту библиотеку для отправки Push в свой браузер, но, очевидно, это становится потрясающе, когда вам нужно что-то, чем вы можете уведомить вас, пока вас нет. Более того, создатель пакета R является тем же самым известным Rcpp, Dirk Eddelbuettel. Я бы сказал, что это стоит того!
Ответ 13
Вдохновленный 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)
}
}
Ответ 14
Как насчет воспроизведения музыки?
shell.exec("foo/Born.to.be.wild.mp3")
Ответ 15
Вы можете использовать команду notify-send
:
system("notify-send \"R script finished running\"")
Ответ 16
Из-за этих многочисленных идей я создал решение без доступа в Интернет, потому что я работаю с VPN-клиентом с Windows. Таким образом, он воспроизводит типичный звук Windows, который обычно есть в любой операционной системе Windows.
#Function with loop, press Esc to stopp
alarm2 <- function(){
while(TRUE){
system("cmd.exe",input="C:/Windows/WinSxS/amd64_microsoft-windows-shell-sounds_31bf3856ad364e35_10.0.17134.1_none_fc93088a1eb3fd11/tada.wav")
Sys.sleep(1)
}
}
Функция без циклы
alarm3 <- function(){
system("cmd.exe",input="C:/Windows/WinSxS/amd64_microsoft-windows-shell-sounds_31bf3856ad364e35_10.0.17134.1_none_fc93088a1eb3fd11/tada.wav")
Sys.sleep(1)
}