스크립트 끝에서 R 신호음을 울리거나 재생하는 방법이 있습니까?


149

R 스크립트를 실행할 때 다른 데스크탑에서 다른 작업을 수행합니다. 자주 확인하지 않으면 언제 무언가가 완료되었는지 알 수 없습니다. 스크립트 종료시 비프 음 (시스템 비프 음 등)을 호출하거나 R이 소리를 내거나 으르렁 거리는 소리를내는 방법이 있습니까?

답변:


98
alarm()

알람 기능. \a콘솔 로 보내서 작동합니다


1
PC 스피커를 비활성화 한 경우 간단하고 완벽하지만 쓸모가 없습니다. Windows에서 어떻게 실행되는지 모르겠습니다.
aL3xa

@ Mulon : MacOSX 10.11.1, R 3.2.2에서 작동합니다. 희미한 "펌프"소리가 들립니다.
Benjamin

5
Windows 7, x64, R 3.2.2에서는 작동하지 않습니다. beepr미세하지만 작품 아래에 패키지로 제공된다.
Augustin

159

beepr크로스 플랫폼에서 작동 해야하는 R에서 알림 소리를 내기위한 유일한 목적으로 패키지 ( )가 있습니다. beepr을 설치하고 소리를 내려면 다음을 실행하십시오.

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

github에 대한 추가 정보 : https://github.com/rasmusab/beepr


1
라스무스, 멋져 보여 이 페이지에는 많은 가시성이 있기 때문에 여기에서 물어볼 것이라고 생각했습니다. 옵션에서 beepr을 호출 할 수 있습니다 (예 : options (error = beepr (sound = 9))? 성공적인 실행 후 그것을 호출하는 것이 유용합니다 U & 나는 그것을 사용할 것입니다. 그러나 코드가 충돌하면 호출하는 것이 좋을 것입니다 ... 건배!
dez93_2000

4
확실한! 다음과 같은 함수로 감싸면됩니다 options(error = function() {beep(9)}). 슈퍼 자극하지만 :)
Rasmus Bååth

3
만세! 다른 제안 중 일부가 그렇지 않은 경우 Windows 7 컴퓨터에서 작동합니다.
jeramy townsley

5
이것은 내가 가장 좋아하는 패키지로 dplyr을 넘어 섰습니다 : D
Mullefa

2
@lukeA while (1) beepr::beep(3) 는 나만큼이나 당신에게 이상 했습니까? }
의 RaWR

59

MacOSX에서는 컴퓨터가 다음과 같이 말할 수 있습니다.

system("say Just finished!")

또한 말할 인공 음성을 변경할 수도 있습니다.

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

컴퓨터에서 사용 가능한 음성을 선택할 수 있습니다. Yosemite에서는 시스템 환경 설정-> 받아쓰기 및 말하기-> 텍스트 음성 변환 에서 설치된 음성을 확인할 수 있습니다 .



33

alarm Windows 컴퓨터에서 작동하지 않으므로 실제로 노이즈를 발생시키는 기능을 만들었습니다.

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

이것은 분명히 Windows에서만 작동하지만 임의의 Windows 컴퓨터에서도 실행될 것이라고 보장하지는 않습니다. 나는 내 컴퓨터에서만 테스트했지만 누군가와 같은 문제가있는 경우 게시 할 것이라고 생각했습니다 alarm.


1
기묘한. alarm()내 컴퓨터에서 소음을 내도록 만듭니다 (XP, 대화식으로 실행)
BenBarnes

1
Dason의 코드가 Windows 7 컴퓨터에서 작동하지 않는 것 같습니다.
russellpierce 2013

@drknexus 다른 옵션은 컴퓨터에서 작동하지 않습니다. 이것은 내 컴퓨터에서 작동했습니다. 나는 그것이 임의의 컴퓨터에서 작동한다고 주장 alarm()하지 않았지만 내 컴퓨터에서 작동하지 않았기 때문에 제공했으며 어떤 이유로 든 작동했습니다.
Dason

29

고양이 ( 'Hello world! \ a')


죄송하지만 Mario는 전혀 도움이되지 않습니다. 화면이 보이면 언제 끝났는지 알 수 있습니다. 더 이상 아무것도 출력 할 필요가 없습니다. 나는들을 수있는 것을 찾고 있었다. 죄송합니다. 답변을 취소했습니다 (실행 취소 할 수 없음).
Maiasaura

5
왜 이것이 다운 보팅되고 있습니까? 상기 봐 alarm소스 그리고 당신은 무엇을하는 일은 단지는 것을 볼 수 있습니다 cat("\a")전화.
니코

글쎄, 당신은 무엇을 알고 ... 여기 설명이 있습니다 : 사용자 에게 청각 또는 시각적 신호를 제공합니다. 그러나와 같은 것 cat("foo\a")입니다. 사용자가 이것을 이것을 cat("Hello world!\n")? 말하기
어렵다

2
팁 덕분에 alarm () = cat ( '\ a')을 인식하지 못했습니다. 부수적으로 C 및 C ++에서 '\ a'를 수행 할 수도 있습니다 (이것은 내가하고있는 일을 알려주는 데 사용되었습니다). OS X에 있고 'a'가 실행될 때 '시스템 환경 설정'> '범용 액세스'> '청각'> '화면 깜박임 ...'을 활성화하는 경우 두 번째 참고 사항입니다.
mpk

17

뿐만 아니라 프로그램이 반복되면 Youtube에서 멋진 음악을 넣을 수도 있습니다 :) (Ubuntu / Debian :)

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

네, 불행하게도 ... 그것은 제거 ...하지만 생각은 분명 :)입니다
moldovean

1
이것을 시도하고 싶습니다. 다른 사본을 찾으십시오! :)
Waldir Leoncio

12

shell.exec("url")Windows에서 일부 YouTube 클립을 여는 데 사용 하십시오


이 접근 방식은 과소 평가되었습니다. 비교적 긴 신호이지만 쉽게 묵음 된 신호가 생성됩니다 (짧은 / a와 반대).
russellpierce

... 나는 Windows 이외의 플랫폼에서 작동 해야하는 동일한 유형의 답변을 아래에 제공합니다.
russellpierce

11

최신 정보:

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아래에서 참조 할 필요가 없습니다 .

-

내가있어 터미널 통지 명령 줄에서 바탕 화면 알림을 내 맥에 설치합니다. 그런 다음 다음 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명령이 포함되었습니다 .


10

GUI와 웹 브라우저를 사용하는 OS에 대해 OS 독립적 인 것은 어떻습니까? RStudio Server에서도 작동합니다!

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

4
나는 릭 롤을 기대하는 절반
Ic3fr0g

8

또는 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 *.*아무것도 ... 그리고 나는 그것을 의미한다.

그러나 이것은 단지 약자 경우 당신이 GNU / 리눅스 (또는 UNIX) 분포를 실행하고, 그렇지 않으면, 윈도우의 특정 명령에 스틱,이 경우에 불구하고, 나는 당신에게 많은 정보를 줄 수 없습니다 ...


7
이에 상응하는 MacOSX는 growlnotify스크립트입니다 (Growl ( growl.info )로 패키지 ) :system("growlnotify -t 'R script info' -m 'Finished!'")
Michael Dunn

6

에서 영감을 얻은 beepr이 기능은 현재 이러한 종류의 문제에 사용하고 있습니다.

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)
  }
}


5

이 패키지를 살펴보십시오 : RPushBullet

컴퓨터, 전화 및 태블릿간에 빠르고 효율적인 알림 (및 파일 전송)을 제공하는 Pushbullet 메시징 서비스에 대한 R 인터페이스

RPushbullet은 완전 무료이며 멀티 플랫폼입니다. 귀하의 질문에 관해서는,이 라이브러리를 사용하여 브라우저에 푸시를 보낼 수는 있지만 외출 중에 알려주는 것보다 무언가가 필요할 때 놀랍습니다. 또한, R 패키지의 작성자는 잘 알려진 Rcpp 인 Dirk Eddelbuettel과 동일합니다. 나는 그것이 가치가 있다고 말할 것입니다!


0

다음 notify-send명령 을 사용할 수 있습니다 .

system("notify-send \"R script finished running\"")

4
어떤 OS, 어떤 맥락?
sindri_baldur

0

이러한 많은 아이디어로 인해 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)
    }

1
이 질문에 올바른
v8-E
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.