Como desativar “Salvar imagem do espaço de trabalho?” prompt em R?


92

Quando saio do shell R interativo, ele exibe um prompt irritante todas as vezes:

>
>
Salvar imagem do espaço de trabalho? [s / n / c]: n

Estou sempre respondendo "não" a ele, porque se quisesse salvar meu trabalho, faria isso antes de tentar sair.

Como se livrar do prompt?


Nota: veja ?save.image


7
@Spacedman: é Ctrl + Z no Windows, então nunca tente "desfazer" nada. ;-)
Joshua Ulrich

3
No GNU / Linux, inicieR --vanilla
aL3xa

veja também esta resposta usando a q()função personalizada em .Rprofie: stackoverflow.com/a/13043239/180892
Jeromy Anglim

5
pelo que vale a pena, RStudio tem um gancho de preferências para isso
Ben Bolker

2
fwiw (também), este é o comportamento padrão no console R radiano .
Keith Hughitt

Respostas:


76

Você pode passar o --no-saveargumento da linha de comando ao iniciar o R ​​ou pode substituir a qfunção:

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

Coloque o código acima em seu .Rprofile para que ele seja executado na inicialização de cada sessão.


2
@Sacha Então dê uma olhada em stackoverflow.com/questions/1189759/…
Marek de

2
Depois de instalar o pacote Defaults e adicionar o código acima ao meu arquivo Rprofile.site (executando R 2.15.1 no Windows 7), recebo o seguinte erro: "Erro em bindingIsLocked (name, as.environment (find (name)) ): não foi possível encontrar a função 'encontrar' "
John D. Cook

2
O pacote Defaults aparentemente foi removido.
Praxeolitic

1
Estou recebendo "Erro: não foi possível encontrar a função" assignInNamespace "". R 3.1.2 no OS X
Josh Hansen

5
@Josh Hansen adiciona biblioteca (utils) ao seu .Rprofile para localizar assignInNamespace
FXQuantTrader

31

Ainda não encontrei a solução Linux mais fácil :)

No ubuntu, adicione a seguinte linha ao seu ~/.bashrc:

alias R='R --no-save'

Cada vez que você iniciar o console R com R, a --no-saveopção será passada .


2
Ou como @ aL3xa especificado em um comentário acima, use R --vanillapara combinar Combine --no-save, --no-restore, --no-site-file, --no-init-file and --no-environ.
Paul Rougieux

23

Você pode escapar do prompt " Salvar imagem do espaço de trabalho? " Com um Ctrl+D.

Portanto, se você fizer Ctrl+Dduas vezes no R interativo, sairá do R sem salvar sua área de trabalho.

(Testado em Linux e OS X)


11

Se você estiver usando Rgui, clique com o botão direito do mouse no ícone que você usa para iniciar R e clique em "Propriedades" e adicione --no-save ao comando que inicia R.

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

Se você estiver usando um editor diferente do Rgui, você deve passar --no-save para a linha de comando do R ao iniciar o R


Você pode compartilhar uma captura de tela da guia de propriedades?
Ashrith

8

Substituir a opção padrão para salvar o argumento da função de saída

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

coloque esta linha em .Rprofile

Editar: adicionado q, portanto, não há prompt, não importa qual variante é usada


> formals (quit) $ save <- "no"> q () Salvar imagem da área de trabalho? [s / n / c]:
O.rka

5

Você pode facilmente adicionar uma qq()função ao arquivo .Rprofile

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

Eu pensei que a opção de salvar estava disponível com opções, mas aparentemente a resposta de Joshua é a melhor.


5

Obtenha o melhor de ambas as estratégias fornecidas por mreq e BondedDust :

O padrão é não salvar adicionando a seguinte linha ao seu ~ / .bashrc:

alias R='R --no-save'

Mas dê a si mesmo uma maneira fácil de economizar ao sair adicionando isso a ~ / .Rprofile:

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

Então, agora q()fecha sem salvar (ou perguntar), mas qs()vai salvar e sair (também sem perguntar)


3

Que tal apenas evitar o prompt digitando em q('no')vez disso


20
.. que é ainda mais batidas no teclado do que responder ao prompt :-)
TMS

3

Se, como eu, digitar um par inteiro de colchetes parece muito esforço para sair do repl, você pode tentar isto:

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

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

Isso cria uma nova classe, que faz com que R saia ao tentar imprimir essa classe. O resultado é que se você rodar exitno R repl, a coisa toda vai sair (porque ele tenta imprimir).

NB: você pode adicioná-lo ~/.Rprofilepara carregar no início de cada sessão.


2

Você pode criar um alias para o comando R:

usando bash :alias R='R --no-save'

usando csh: alias R 'R --no-save'


-2

Se você se sentir aventureiro o suficiente, também pode editar a startupseção no final de /usr/bin/R, ou seja, adicionar --no-saveàs chamadas de exec. No entanto, se você precisar salvar seu espaço de trabalho, lembre-se de save.image().


1
Eu nunca edito diretamente nada sob /usr/bin- e te desencorajo fortemente de fazer isso. Essa é a área do sistema, "pessoal não autorizado é proibido".
ulidtko

3
@ulidtko Se for o meu sistema, estou autorizado :) Acho que o verdadeiro motivo pelo qual não é uma boa ideia é porque será sobrescrito por atualizações futuras.
Michael Mior

@MichaelMior bem sim, você está absolutamente correto; entretanto: humanos bagunçam. O tempo todo. É simplesmente uma orientação; a menos que você tenha um bom motivo, deixe /usrpara os robôs (quero dizer, os gerenciadores de pacotes), uma vez que eles já gerenciam essa área. Existem maneiras de não interferir. Caso contrário, você está procurando aventuras propositalmente.
ulidtko
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.