"Çalışma alanı görüntüsünü kaydet" nasıl devre dışı bırakılır? istemi R?


96

Etkileşimli R kabuğundan çıktığımda, her seferinde can sıkıcı bir uyarı görüntülüyor:

>
>
Çalışma alanı resmi kaydedilsin mi? [y / n / c]: n

Ona her zaman "hayır" cevabını veriyorum, çünkü çalışmamı kurtarmak isteseydim, bunu çıkmaya çalışmadan önce yapardım .

İstemden nasıl kurtulurum?


Not: bkz. ?save.image


7
@Spacedman: Windows'ta Ctrl + Z, bu yüzden hiçbir şeyi "geri almayı" denemeyin. ;-)
Joshua Ulrich

4
GNU / Linux'ta, startR --vanilla
aL3xa



2
fwiw (ayrıca), bu radyan R konsolundaki varsayılan davranıştır .
Keith Hughitt

Yanıtlar:


76

--no-saveR'yi başlattığınızda komut satırı bağımsız değişkenini iletebilir veya qişlevi geçersiz kılabilirsiniz :

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

Yukarıdaki kodu .R profilinize koyun, böylece her oturum için başlangıçta çalıştırılır.



2
Defaults paketini yükledikten ve yukarıdaki kodu Rprofile.site dosyama ekledikten sonra (Windows 7'de R 2.15.1 çalıştıran), şu hatayı alıyorum: "Bağlayıcıda hata (ad, as.environment (bul (ad))) ): 'bul' işlevi bulunamadı "
John D. Cook

2
Defaults paketi görünüşte kaldırıldı.
Praxeolitic

1
"Hata:" assignInNamespace "işlevi bulunamıyor" mesajı alıyorum. OS X'te R 3.1.2
Josh Hansen

5
Senin .Rprofile için @Josh Hansen eklenti kitaplığı (utils) assignInNamespace bulmak
FXQuantTrader

36

Henüz en kolay Linux çözümünü bulamadım :)

Ubuntu'da aşağıdaki satırı ekleyiniz ~/.bashrc:

alias R='R --no-save'

R konsolunu her başlattığınızda R, --no-saveseçenek geçilecektir .


3
Veya yukarıdaki açıklamada belirtildiği gibi @ aL3xa R --vanillabirleştirmek için kullanın Combine --no-save, --no-restore, --no-site-file, --no-init-file and --no-environ.
Paul Rougieux

25

"Çalışma alanı görüntüsünü kaydet? " Sorusundan birCtrl+D .

Bu nedenle, Ctrl+Detkileşimli R'de iki kez yaparsanız, çalışma alanınızı kaydetmeden R'den çıkarsınız.

(Linux ve OS X'te test edilmiştir)


11

Rgui kullanıyorsanız, R'yi başlatmak için kullandığınız simgeye sağ tıklayın ve "Özellikler" e tıklayın ve R'yi başlatan komuta --no-save ekleyin.

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

Rgui'den farklı bir düzenleyici kullanıyorsanız, R'yi başlatırken R komut satırına --no-save geçmelisiniz


Lütfen özellikler sekmesinin ekran görüntüsünü paylaşır mısınız?
Ashrith

8

İçin Üzerine Yaz varsayılan seçenek tasarrufu argümanı çıkmak fonksiyonu

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

bu satırı .Rprofile içine koyun

Düzenleme: eklendi q, bu nedenle hangi varyant kullanılırsa kullanılsın sorulmaz


> formals (çık) $ kaydet <- "hayır"> q () Çalışma alanı görüntüsü kaydedilsin mi? [y / n / c]:
O.rka

7

1. ve 2. kullanıcılar tarafından verilen her iki stratejiden de en iyi şekilde yararlanın :

Varsayılan olarak, aşağıdaki satırı ~ / .bashrc dosyanıza ekleyerek kaydetmemek için:

alias R='R --no-save'

Ancak bunu ~ / .Rprofile dosyasına ekleyerek çıkışta tasarruf etmenin kolay bir yolunu verin:

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

Yani şimdi q()kaydetmeden veya sormadan qs()çıkacak, ancak kaydedecek ve çıkacak (ayrıca sormadan)


wq <- function() { q(save="yes")}Vi'yi yansıtmayı seviyorum . (ayrıca, bir üzerine yazma işlevi yazıyorsanız, neden sabit bir argüman göndermesini
sağlamıyorsunuz?

5

qq().Rprofile dosyasına kolayca bir işlev ekleyebilirsiniz

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

Kaydetme seçeneğinin seçeneklerle birlikte kullanılabileceğini düşündüm, ancak görünüşe göre Joshua'nın cevabı en iyisi.


3

Benim gibi, bir çift parantez yazmak, repl'den çıkmak için çok fazla çaba gerektiriyorsa, şunu deneyebilirsiniz:

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

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

Bu, söz konusu sınıfı yazdırmaya çalışırken R'nin çıkmasına neden olan yeni bir sınıf yaratır. Sonuç exit, R repl'de çalıştırırsanız , her şeyin çıkacağıdır (çünkü yazdırmaya çalışır).

NB: ~/.RprofileHer seansın başında yüklemek için ekleyebilirsiniz .


2

q('no')Bunun yerine yazarak istemden kaçınmaya ne dersiniz?


21
.. bu, istemi yanıtlamaktan çok daha fazla klavye vuruşu demektir :-)
TMS

2

R komutu için bir takma ad oluşturabilirsiniz:

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

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


-3

Yeterince maceraperest hissediyorsanız startup, sondaki bölümü de düzenleyebilirsiniz /usr/bin/R, yani --no-saveexec çağrılarına ekleyebilirsiniz . Bununla birlikte, çalışma alanınızı kaydetmeniz gerekiyorsa, unutmayın save.image().


1
Hiçbir zaman altında hiçbir şeyi doğrudan düzenlemem /usr/binve bunu yapmaktan kesinlikle vazgeçiriyorum. Bu sistem alanı, "yetkisiz personel yasaktır".
ulidtko

3
@ulidtko Benim sistemimse, yetkim var :) Sanırım bunun iyi bir fikir olmamasının asıl nedeni, gelecekteki yükseltmelerle üzerine yazılacak olmasıdır.
Michael Mior

@MichaelMior iyi evet, kesinlikle haklısınız; ancak: insanlar karışır. Her zaman. Bu sadece bir kılavuzdur; iyi bir sebebiniz yoksa /usrrobotlara (yani paket yöneticilerine) bırakın çünkü o alanı zaten yönetiyorlar. Müdahale etmemenin yolları var. Aksi takdirde, kasıtlı olarak macera ararsınız.
ulidtko
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.