"작업 공간 이미지를 저장 하시겠습니까?"를 비활성화하는 방법 R에서 프롬프트?


92

대화 형 R 셸을 종료하면 매번 성가신 프롬프트가 표시됩니다.

>
>
작업 공간 이미지를 저장 하시겠습니까? [y / n / c] : n

나는 항상 "아니오"라고 대답합니다. 작업을 저장하고 싶다면 종료 하기 전에 그렇게 할 것이기 때문 입니다.

프롬프트를 제거하는 방법?


참고 : 참조 ?save.image


7
@Spacedman : Windows에서는 Ctrl + Z이므로 아무 것도 "실행 취소"하지 마십시오. ;-)
— Joshua Ulrich

3
GNU / Linux에서 시작R --vanilla
— aL3xa

사용자 정의 사용이 대답을 참조 q().Rprofie의 기능 : stackoverflow.com/a/13043239/180892
— 제로미 Anglim

5
그만한 가치를 위해 RStudio에는 이에 대한 기본 설정 후크가 있습니다
— Ben Bolker 2011

2
fwiw (또한), 이것은 radian R 콘솔 의 기본 동작입니다 .
— Keith Hughitt 19:51에

답변:


76

--no-saveR을 시작할 때 명령 줄 인수를 전달 하거나 q함수를 재정의 할 수 있습니다 .

utils::assignInNamespace(
  "q", 
  function(save = "no", status = 0, runLast = TRUE) 
  {
    .Internal(quit(save, status, runLast))
  }, 
  "base"
)

위의 코드를 .Rprofile에 넣으면 모든 세션이 시작될 때 실행됩니다.



2
Defaults 패키지를 설치하고 위의 코드를 내 Rprofile.site 파일에 추가 한 후 (Windows 7에서 R 2.15.1 실행) 다음 오류가 발생합니다. "bindingIsLocked (name, as.environment (find (name)) 오류) ) : '발견' "기능을 찾을 수 없습니다
— 존 D. 쿡

2
Defaults 패키지가 제거 된 것 같습니다.
— Praxeolitic 2014

1
"오류 :"assignInNamespace "기능을 찾을 수 없습니다"라는 메시지가 나타납니다. OS X에 R 3.1.2
— 조쉬 한센

5
당신의 .Rprofile에 @Josh 한센 추가 라이브러리 (유틸)는 assignInNamespace 찾을 수
— FXQuantTrader

31

아직 가장 쉬운 Linux 솔루션을 찾지 못했습니다. :)

우분투에서 다음 줄을 추가하십시오 ~/.bashrc.

alias R='R --no-save'

로 R 콘솔을 시작할 때마다 옵션 R이 전달됩니다 --no-save.


2
aL3xa 사용 위의 코멘트에 지정된 @ 또는 R --vanilla결합합니다 Combine --no-save, --no-restore, --no-site-file, --no-init-file and --no-environ.
— Paul Rougieux

23

" Save workspace image? "프롬프트를 Ctrl+D.

따라서 Ctrl+D대화 형 R에서 두 번 수행 하면 작업 공간을 저장하지 않고 R을 종료합니다.

(Linux 및 OS X에서 테스트 됨)


11

Rgui를 사용하는 경우 R을 시작하는 데 사용하는 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "속성"을 클릭 한 다음 R을 시작하는 명령에 --no-save를 추가합니다.

( http://tolstoy.newcastle.edu.au/R/help/05/03/1115.html에서 )

Rgui와 다른 편집기를 사용하는 경우 R을 시작할 때 R 명령 줄에 --no-save를 전달해야합니다.


속성 탭의 스크린 샷을 공유해 주시겠습니까?
— Ashrith

8

종료 함수의 저장 인수에 대한 기본 옵션 덮어 쓰기

formals(quit)$save <- formals(q)$save <- "no"

이 줄을 .Rprofile에 넣으십시오.

편집 : 추가 q되었으므로 어떤 변형이 사용 되든 프롬프트가 없습니다.


> formals (quit) $ save <- "no"> q () 작업 공간 이미지를 저장 하시겠습니까? [y / n / c] :
— O.rka

5

qq().Rprofile 파일에 기능을 쉽게 추가 할 수 있습니다.

 qq <- function(save="no") { q(save=save)}

옵션과 함께 저장 옵션을 사용할 수 있다고 생각했지만 Joshua의 대답이 가장 좋습니다.


5

mreq 및 BondedDust가 제공하는 두 가지 전략 모두를 최대한 활용하십시오 .

~ / .bashrc에 다음 줄을 추가하여 저장하지 않도록 기본 설정합니다.

alias R='R --no-save'

그러나 이것을 ~ / .Rprofile에 추가하여 종료시 저장하는 쉬운 방법을 제공하십시오.

qs <- function(save="yes") { q(save=save)}

따라서 이제 q()저장 (또는 프롬프트)없이 종료되지만 qs()저장 및 종료 (또한 프롬프트없이)


3

q('no')대신 입력하여 프롬프트를 피하는 것은 어떻습니까?


20
.. 프롬프트에 응답하는 것보다 훨씬 더 많은 키보드 히트입니다 :-)
— TMS

3

나처럼 괄호 전체를 입력하는 것이 repl을 종료하는 데 너무 많은 노력을 기울이는 것처럼 보이면 다음을 시도해 볼 수 있습니다.

exit <- structure(list(), class = "exit_command")

print.exit_command <- function(...) {
  q("no")  # exit without saving
}

이렇게하면 새 클래스가 생성되어 해당 클래스를 인쇄하려고 할 때 R이 종료됩니다. 결론은 exitR repl에서 실행 하면 모든 것이 종료된다는 것입니다 (인쇄를 시도하기 때문에).

참고 : ~/.Rprofile모든 세션이 시작될 때로드하도록 에 추가 할 수 있습니다 .


2

R 명령에 대한 별칭을 만들 수 있습니다.

bash 사용 :alias R='R --no-save'

csh 사용 : alias R 'R --no-save'


-2

충분히 모험심을 느낀다면 startup의 끝에 있는 섹션을 편집 할 수도 있습니다 /usr/bin/R. 즉 --no-save, exec 호출에 추가 할 수 있습니다. 그러나 작업 공간을 저장해야하는 경우 save.image().


1
저는 아래에서 직접 편집 한 적이 없으며 그렇게 하지/usr/bin 않도록 강력히 권장합니다. 이것이 바로 시스템 영역입니다. "승인되지 않은 사람은 금지됩니다".
— ulidtko 2015

3
@ulidtko 내 시스템이라면 권한이 있습니다. :) 이것이 좋은 생각이 아닌 진짜 이유는 향후 업그레이드로 덮어 쓸 것이기 때문이라고 생각합니다.
— Michael Mior

@MichaelMior 예, 당신은 절대적으로 정확합니다. 그러나 : 인간은 엉망입니다. 항상. 단순한 지침 일뿐입니다. 정당한 이유가 없다면 /usr로봇 (패키지 관리자)에게 맡기십시오 . 이미 해당 영역을 관리하고 있기 때문입니다. 방해하지 않는 방법이 있습니다. 그렇지 않으면 의도적으로 모험을 찾고 있습니다.
— ulidtko
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.