有没有办法让R哔/在剧本结束时播放声音?
当我运行R脚本时,我会在其他桌面上执行其他操作。 如果我不经常检查,我不知道什么时候结束。 有没有办法调用一个哔声(如系统哔声)或让R发挥声音或通过一些代码在脚本的末尾通知咆哮?
alarm()
Tha警报function。
我有一个软件包( beepr
),其唯一目的是在R中发出通知声音,这个声音应该是跨平台的。 运行以下命令安装beepr并发出声音:
install.packages("beepr") library(beepr) beep()
更多信息在github: https : //github.com/rasmusab/beepr
你应该在它完成时发出推特: http : //cran.r-project.org/web/packages/twitteR/index.html
在MacOSX上,您可以让计算机说话:
system("say Just finished!")
你也可以改变会说话的人造声音:
system("say -v Kathy Just finished!")
您可以select计算机上可用的任何语音。 在优胜美地上,您可以看到在系统偏好设置 – >默认和语音 – >文本到语音中安装了哪些语音 。
猫('Hello world!\ a')
alarm
不能在我的Windows机器上工作,所以我创build了一个实际上会产生噪音的function。
beep <- function(n = 3){ for(i in seq(n)){ system("rundll32 user32.dll,MessageBeep -1") Sys.sleep(.5) } }
这显然只能在Windows上工作,但我不保证它甚至可以在任意Windows计算机上运行。 我只是在我的机器上testing过,但我想我会张贴它,以防有人遇到与我一样的alarm
问题。
不仅如此,当程序完成循环时,您还可以从Youtube上放入一些史诗般的音乐:)(对于Ubuntu / Debian 🙂
system("xdg-open 'http://www.youtube.com/watch?v=9jK-NcRmVcw'")
请使用shell.exec("url")
在Windows上打开一些YouTube剪辑
或者如果你使用的是GNU / Linux发行版,并且把pcspkr模块列入黑名单(PC扬声器总是令人讨厌的话),可以尝试将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
function,你可以做任何事情:发送电子邮件,运行其他脚本,重新启动机器, sudo rm -rf *.*
等等什么 …我的意思是。
但是, 如果你正在运行GNU / Linux(或者UNIX)发行版,那么这个标准是站不住脚的,否则,坚持Windows特定的命令,尽pipe在这种情况下,我不能给你太多的信息。
我在我的Mac上安装了terminal通知程序,从命令行获取桌面通知。 然后你可以像这样把一个调用包装到system()
命令中(显然,改变path):
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
命令。
如何合理的操作系统独立的操作系统与GUI和网页浏览器? 它甚至在RStudio服务器上工作!
browseURL('https://www.youtube.com/watch?v=QH2-TGUlwu4')
受到beepr
启发,这是我目前用于解决这些问题的function: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
Pushbullet消息服务的R接口,提供计算机,手机和平板电脑之间的快速高效的通知(以及文件传输)
RPushbullet是完全免费的和多平台。 至于你的问题,你可以使用这个库发送一个推送到你的浏览器,但显然当你需要的东西比你可以通知你时更惊人。 此外,R软件包的创build者和知名的Rcpp,Dirk Eddelbuettel一样。 我会说这是值得的一枪!
您可以使用notify-send
命令:
system("notify-send \"R script finished running\"")
玩一些音乐怎么样?
shell.exec("foo/Born.to.be.wild.mp3")