Bagaimana cara menonaktifkan "Simpan gambar ruang kerja?" cepat di R?

95

Ketika saya keluar dari shell R interaktif, ini akan menampilkan prompt yang mengganggu setiap saat:

>
>
Simpan gambar ruang kerja? [y / t / c]: n

Saya selalu menjawab "tidak" untuk itu, karena jika saya ingin menyelamatkan pekerjaan saya, saya akan melakukannya sebelum mencoba keluar.

Bagaimana cara menghilangkan prompt?


Catatan: lihat ?save.image

ulidtko
sumber
7
@Spacedman: Ctrl + Z di Windows, jadi jangan pernah mencoba untuk "membatalkan" apa pun. ;-)
Joshua Ulrich
4
Di GNU / Linux, mulaiR --vanilla
aL3xa
lihat juga jawaban ini menggunakan q()fungsi kustom di .Rprofie: stackoverflow.com/a/13043239/180892
Jeromy Anglim
5
untuk apa nilainya, RStudio memiliki kait preferensi untuk ini
Ben Bolker
2
fwiw (juga), ini adalah perilaku default di konsol R radian .
Keith Hughitt

Jawaban:

76

Anda bisa meneruskan --no-saveargumen baris perintah saat Anda memulai R, atau Anda bisa mengganti qfungsi:

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

Letakkan kode di atas di profil .R Anda sehingga akan dijalankan saat startup untuk setiap sesi.

Joshua Ulrich
sumber
2
@Sacha Jadi lihat di stackoverflow.com/questions/1189759/…
Marek
2
Setelah saya menginstal paket Default dan menambahkan kode di atas ke file Rprofile.site saya (menjalankan R 2.15.1 pada Windows 7), saya mendapatkan error berikut: "Error in bindingIsLocked (name, as.environment (find (name)) ): tidak dapat menemukan fungsi 'menemukan' "
John D. Cook
2
Paket Default tampaknya telah dihapus.
Praxeolitik
1
Saya mendapatkan "Kesalahan: tidak dapat menemukan fungsi" assignInNamespace "". R 3.1.2 di OS X
Josh Hansen
5
@Josh Hansen menambahkan pustaka (utils) ke profil
.R
35

Belum menemukan solusi Linux termudah :)

Di ubuntu tambahkan baris berikut ke Anda ~/.bashrc:

alias R='R --no-save'

Setiap kali Anda memulai konsol R R, --no-saveopsi tersebut akan diberikan .

mreq
sumber
3
Atau seperti @ aL3xa yang ditentukan dalam komentar di atas, gunakan R --vanillauntuk menggabungkan Combine --no-save, --no-restore, --no-site-file, --no-init-file and --no-environ.
Paul Rougieux
25

Anda dapat keluar dari permintaan " Simpan gambar ruang kerja? " Dengan file Ctrl+D.

Jadi, jika Anda melakukan Ctrl+Ddua kali dalam R interaktif, maka Anda keluar dari R tanpa menyimpan ruang kerja Anda.

(Diuji di Linux dan OS X)

Hugo Ideler
sumber
11

Jika Anda menggunakan Rgui, klik kanan pada ikon yang Anda gunakan untuk memulai R dan klik "Properties", dan tambahkan --no-save ke perintah yang memulai R.

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

Jika Anda menggunakan editor yang berbeda dari Rgui, Anda harus meneruskan --no-save ke baris perintah R saat memulai R

Andrie
sumber
Bisakah Anda membagikan tangkapan layar tab properti?
Ashrith
8

Timpa opsi default untuk menyimpan argumen dari fungsi keluar

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

letakkan baris ini di .Rprofile

Edit: ditambahkan q, jadi tidak ada permintaan apa pun varian mana yang digunakan

Pafnucy
sumber
> formal (keluar) $ save <- "no"> q () Simpan gambar ruang kerja? [y / n / c]:
O.rka
6

Dapatkan yang terbaik dari kedua strategi yang diberikan oleh pengguna 1 dan 2 :

Default untuk tidak menyimpan dengan menambahkan baris berikut ke ~ / .bashrc Anda:

alias R='R --no-save'

Tetapi beri diri Anda cara mudah untuk menghemat saat keluar dengan menambahkan ini ke ~ / .Rprofile:

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

Jadi sekarang q()akan berhenti tanpa menyimpan atau meminta tetapi qs()akan menyimpan dan keluar (juga tanpa disuruh)

jari terbang
sumber
Saya suka itu wq <- function() { q(save="yes")}untuk mencerminkan vi. (juga, jika Anda menulis fungsi timpa, mengapa tidak membuatnya mengirim argumen tetap)
Dannid
5

Anda dapat dengan mudah menambahkan qq()fungsi ke file .Rprofile

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

Saya pikir opsi simpan tersedia dengan opsi, tetapi ternyata jawaban Joshua adalah yang terbaik.

IRTFM
sumber
3

Jika, seperti saya, mengetikkan seluruh sepasang tanda kurung sepertinya terlalu banyak usaha untuk keluar dari repl, Anda dapat mencoba ini:

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

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

Ini menciptakan kelas baru, yang menyebabkan R keluar saat mencoba mencetak kelas tersebut. Hasilnya adalah jika Anda menjalankan exitrepl R, semuanya akan keluar (karena mencoba untuk mencetaknya).

NB: Anda dapat menambahkannya ke ~/.Rprofileuntuk memuat di awal setiap sesi.

snakeoilsales
sumber
2

Bagaimana kalau menghindari prompt dengan mengetik q('no')saja

Stedy
sumber
21
.. yang bahkan lebih banyak hits keyboard daripada menjawab prompt :-)
TMS
2

Anda dapat membuat alias untuk perintah R:

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

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

penyihir
sumber
-3

Jika Anda merasa cukup berjiwa petualang, Anda juga bisa mengedit startupbagian di akhir /usr/bin/R, yaitu menambahkan --no-saveke panggilan exec. Namun, jika Anda perlu menyimpan ruang kerja Anda, ingatlah untuk save.image().

Bijoy J
sumber
1
Saya tidak pernah secara langsung mengedit apa pun di bawah /usr/bin- dan sangat tidak menyarankan Anda melakukannya. Itulah area sistem, "personel yang tidak berwenang dilarang".
ulidtko
3
@ulidtko Jika ini adalah sistem saya, saya berwenang :) Saya pikir alasan sebenarnya ini bukan ide yang baik adalah karena akan ditimpa oleh peningkatan di masa mendatang.
Michael Mior
@MichaelMior ya, Anda benar sekali; Namun: manusia mengacaukannya. Sepanjang waktu. Ini hanyalah pedoman; kecuali Anda memiliki alasan yang bagus, serahkan /usrkepada robot (maksud saya, manajer paket) karena mereka sudah mengelola area itu. Ada cara untuk tidak ikut campur. Jika tidak, Anda sengaja mencari petualangan.
ulidtko