Kiedy wychodzę z interaktywnej powłoki R, za każdym razem wyświetla irytujący komunikat:
> > Zapisać obraz obszaru roboczego? [t / n / c]: n
Zawsze odpowiadam „nie”, bo gdybym chciał ocalić swoją pracę, zrobiłbym to przed próbą wyjścia.
Jak pozbyć się monitu?
Uwaga: patrz ?save.image
r
read-eval-print-loop
ulidtko
źródło
źródło
R --vanilla
q()
funkcji niestandardowej w .Rprofie: stackoverflow.com/a/13043239/180892Odpowiedzi:
Możesz przekazać
--no-save
argument wiersza poleceń podczas uruchamiania R lub możesz przesłonićq
funkcję:utils::assignInNamespace( "q", function(save = "no", status = 0, runLast = TRUE) { .Internal(quit(save, status, runLast)) }, "base" )
Umieść powyższy kod w swoim .Rprofile, aby był uruchamiany przy starcie dla każdej sesji.
źródło
Nie znalazłem jeszcze najłatwiejszego rozwiązania dla Linuksa :)
Na Ubuntu dodaj następujący wiersz do swojego
~/.bashrc
:alias R='R --no-save'
Za każdym razem, gdy uruchamiasz konsolę R z
R
, zostanie przekazana--no-save
opcja.źródło
R --vanilla
do łączeniaCombine --no-save, --no-restore, --no-site-file, --no-init-file and --no-environ
.Możesz pominąć monit „ Zapisać obraz obszaru roboczego? ” Za pomocąCtrl+D .
Tak więc, jeśli zrobisz Ctrl+Ddwa razy w interaktywnym R, wyjdziesz z R bez zapisywania obszaru roboczego.
(Testowane w systemie Linux i OS X)
źródło
Jeśli używasz Rgui, kliknij prawym przyciskiem myszy ikonę, której używasz do uruchomienia R, kliknij „Właściwości” i dodaj --no-save do polecenia uruchamiającego R.
(z http://tolstoy.newcastle.edu.au/R/help/05/03/1115.html )
Jeśli używasz innego edytora niż Rgui, musisz przekazać --no-save do wiersza poleceń R podczas uruchamiania R
źródło
Zastąp domyślną opcję zapisu argumentu wyjścia z funkcji
formals(quit)$save <- formals(q)$save <- "no"
umieść tę linię w .Rprofile
Edycja: dodana
q
, więc nie ma monitu bez względu na używany wariantźródło
Wykorzystaj to, co najlepsze z obu strategii oferowanych przez mreq i BondedDust :
Domyślnie nie zapisuj, dodając następujący wiersz do swojego ~ / .bashrc:
alias R='R --no-save'
Ale daj sobie łatwy sposób na oszczędzanie przy zamykaniu, dodając to do ~ / .Rprofile:
qs <- function(save="yes") { q(save=save)}
Więc teraz
q()
kończy bez zapisywania (lub monitowania), aleqs()
zapisze i wyjdzie (również bez pytania)źródło
wq <- function() { q(save="yes")}
się lustro vi. (również, jeśli piszesz funkcję nadpisującą, dlaczego nie zmusić jej do wysyłania stałego argumentu)Możesz łatwo dodać
qq()
funkcję do pliku .Rprofileqq <- function(save="no") { q(save=save)}
Myślałem, że opcja zapisywania jest dostępna z opcjami, ale najwyraźniej odpowiedź Joshuy jest najlepsza.
źródło
Jeśli, tak jak ja, wpisanie całej pary nawiasów wydaje się zbyt dużym wysiłkiem, aby wyjść z odpowiedzi, możesz spróbować tego:
exit <- structure(list(), class = "exit_command") print.exit_command <- function(...) { q("no") # exit without saving }
Tworzy to nową klasę, co powoduje, że R kończy pracę podczas próby wydrukowania tej klasy. Skutek jest taki, że jeśli uruchomisz
exit
R repl, całość zakończy się (ponieważ próbuje ją wydrukować).NB: Możesz dodać go do,
~/.Rprofile
aby załadować na początku każdej sesji.źródło
Co powiesz na uniknięcie monitu, wpisując
q('no')
zamiast tegoźródło
Możesz utworzyć alias dla polecenia R:
używając bash :
alias R='R --no-save'
używając csh:
alias R 'R --no-save'
źródło
Jeśli czujesz się na siłach, możesz także edytować
startup
sekcję na końcu/usr/bin/R
, tj. Dodać--no-save
do wywołań exec. Jeśli jednak chcesz zapisać swój obszar roboczy, pamiętaj o tymsave.image()
.źródło
/usr/bin
- i mocno zniechęcić Cię od tego. To jest obszar systemu, „nieautoryzowany personel jest zabroniony”./usr
robotom (mam na myśli menedżerów pakietów), ponieważ one już zarządzają tym obszarem. Istnieją sposoby, aby nie przeszkadzać. W przeciwnym razie celowo szukasz przygód.