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


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.



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 .


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)


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


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


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


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.


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.


2

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


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'


-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().


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.