Answers:
我有一个软件包(beepr
),其唯一目的是在R中发出通知声音,该声音应可跨平台工作。运行以下命令以安装beepr并发出声音:
install.packages("beepr")
library(beepr)
beep()
在github上的更多信息:https : //github.com/rasmusab/beepr
options(error = function() {beep(9)})
。超级刺激:)
while (1) beepr::beep(3)
是那样对您和我一样奇怪吗?:}
完成后,您应该在其上发布鸣叫: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
。
alarm()
使我的机器发出噪音(XP,以交互方式运行R)
alarm()
在我的机器上无法运行,由于某种原因,它可以运行。
猫('Hello world!\ a')
alarm
源代码,您将看到它只是一个cat("\a")
电话。
cat("foo\a")
。也许用户已将其阅读为cat("Hello world!\n")
?很难说...
不仅如此,当程序完成循环时,您还可以从Youtube播放一些史诗般的音乐:)(对于Ubuntu / Debian :)
system("xdg-open 'http://www.youtube.com/watch?v=9jK-NcRmVcw'")
请使用shell.exec("url")
来在Windows上打开一些YouTube剪辑
更新:
在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
命令。
对于具有GUI和Web浏览器的OS,合理地独立于OS的情况如何?它甚至可以在RStudio服务器上使用!
browseURL('https://www.youtube.com/watch?v=QH2-TGUlwu4')
或者,如果您使用的是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
功能,你可以做很多漂亮的事:发送电子邮件,运行一些其他的脚本,重新启动机器,sudo rm -rf *.*
等什么?我是认真的
但这个身高只有IF你正在运行的GNU / Linux(或UNIX)分配,否则,粘到Windows特定的命令,但在这种情况下,我不能给你多少信息...
growlnotify
脚本等效的MacOSX是脚本(与Growl(grol.info打包):system("growlnotify -t 'R script info' -m 'Finished!'")
播放音乐怎么样?
shell.exec("foo/Born.to.be.wild.mp3")
看一下这个包:RPushBullet
Pushbullet消息传递服务的R接口,可在计算机,电话和平板电脑之间提供快速有效的通知(和文件传输)
RPushbullet是完全免费的多种平台。关于您的问题,您可以使用此库将“推”发送到浏览器,但是显然,当您需要某些东西时,它比离开时可以通知您的情况变得令人惊讶。此外,R包的创建者与著名的Rcpp Dirk Eddelbuettel相同。我会说值得一试!
您可以使用以下notify-send
命令:
system("notify-send \"R script finished running\"")
由于这些想法,我创建了一个无法访问Internet的解决方案,因为我使用Windows的VPN客户端。因此,它播放典型的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)
}