วิธีปิด "บันทึกภาพพื้นที่ทำงาน" พร้อมต์ใน R?


95

เมื่อฉันออกจากเชลล์ R แบบโต้ตอบมันจะแสดงข้อความแจ้งที่น่ารำคาญทุกครั้ง:

>
>
บันทึกภาพพื้นที่ทำงานไหม [y / n / c]: น

ฉันมักจะตอบว่า "ไม่" เพราะถ้าฉันต้องการบันทึกงานของฉันฉันจะทำก่อนที่จะพยายามออก

จะกำจัดพรอมต์ได้อย่างไร?


หมายเหตุ: ดู ?save.image


7
@Spacedman: มันคือ Ctrl + Z ใน Windows ดังนั้นอย่าพยายาม "เลิกทำ" อะไรเลย ;-)
Joshua Ulrich

4
ใน GNU / Linux เริ่มR --vanilla
aL3xa

ดูคำตอบนี้โดยใช้q()ฟังก์ชันที่กำหนดเองใน. rprofie: stackoverflow.com/a/13043239/180892
Jeromy Anglim

5
สำหรับสิ่งที่คุ้มค่า RStudio มีการตั้งค่าสำหรับสิ่งนี้
Ben Bolker

2
fwiw (ด้วย) นี่คือลักษณะการทำงานเริ่มต้นในคอนโซลเรเดียน R
Keith Hughitt

คำตอบ:


76

คุณสามารถส่งผ่าน--no-saveอาร์กิวเมนต์บรรทัดคำสั่งเมื่อคุณเริ่ม R หรือคุณสามารถแทนที่qฟังก์ชัน:

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

ใส่รหัสด้านบนใน. Rprofile ของคุณเพื่อให้ถูกเรียกใช้เมื่อเริ่มต้นทุกเซสชัน


2
@Sacha ลองดูที่stackoverflow.com/questions/1189759/…
Marek

2
หลังจากที่ฉันติดตั้งแพ็กเกจ Defaults และเพิ่มโค้ดด้านบนลงในไฟล์ Rprofile.site ของฉัน (เรียกใช้ R 2.15.1 บน Windows 7) ฉันได้รับข้อผิดพลาดต่อไปนี้: "Error in bindingIsLocked (name, as.environment (find (name)) ): ไม่พบฟังก์ชัน 'find' "
John D. Cook

2
เห็นได้ชัดว่าแพ็คเกจค่าเริ่มต้นถูกลบออก
Praxeolitic

1
ฉันได้รับ "ข้อผิดพลาด: ไม่พบฟังก์ชัน" assignInNamespace "" R 3.1.2 บน OS X
Josh Hansen

5
@ Josh Hansen เพิ่มไลบรารี (utils) ไปยัง. rprofile ของคุณเพื่อค้นหา assignInNamespace
FXQuantTrader

35

ยังไม่พบโซลูชัน Linux ที่ง่ายที่สุด :)

ใน Ubuntu ให้เพิ่มบรรทัดต่อไปนี้ใน~/.bashrc:

alias R='R --no-save'

ทุกครั้งที่คุณเริ่มคอนโซล R Rมันจะถูกส่งผ่าน--no-saveตัวเลือก


3
หรือเป็น @ aL3xa ระบุไว้ในความคิดเห็นข้างต้นการใช้งานที่จะรวมR --vanilla Combine --no-save, --no-restore, --no-site-file, --no-init-file and --no-environ
Paul Rougieux

25

คุณสามารถออกจากพรอมต์" Save workspace image? " โดยใช้Ctrl+Dไฟล์.

ดังนั้นหากคุณทำCtrl+Dสองครั้งใน R แบบโต้ตอบคุณจะออกจาก R โดยไม่บันทึกพื้นที่ทำงานของคุณ

(ทดสอบบน Linux และ OS X)


11

หากคุณใช้ Rgui ให้คลิกขวาที่ไอคอนที่คุณใช้เพื่อเริ่ม R และคลิกที่ "Properties" จากนั้นเพิ่ม --no-save ในคำสั่งที่เริ่ม R

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

หากคุณใช้โปรแกรมแก้ไขอื่นที่ไม่ใช่ Rgui คุณต้องส่ง --no-save ไปที่บรรทัดคำสั่ง R เมื่อเริ่ม R


คุณช่วยแชร์ภาพหน้าจอของแท็บคุณสมบัติได้ไหม
Ashrith

8

เขียนทับตัวเลือกเริ่มต้นสำหรับบันทึกอาร์กิวเมนต์ของฟังก์ชันออก

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

ใส่บรรทัดนี้ใน. Rprofile

แก้ไข: เพิ่มqดังนั้นจึงไม่มีข้อความแจ้งไม่ว่าจะใช้ตัวแปรใด


> formals (ออกจาก) $ save <- "no"> q () บันทึกภาพพื้นที่ทำงาน? [y / n / c]:
O.rka

6

รับสิ่งที่ดีที่สุดจากทั้งสองกลยุทธ์ที่กำหนดโดยผู้ใช้1และ2 :

ค่าเริ่มต้นที่จะไม่บันทึกโดยเพิ่มบรรทัดต่อไปนี้ใน ~ / .bashrc ของคุณ:

alias R='R --no-save'

แต่ให้วิธีง่ายๆในการประหยัดเมื่อออกโดยเพิ่มสิ่งนี้ใน ~ / .Rprofile:

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

ตอนนี้q()จะออกโดยไม่บันทึกหรือแจ้ง แต่qs()จะบันทึกและออก (โดยไม่ต้องแจ้ง)


ฉันชอบที่wq <- function() { q(save="yes")}จะสะท้อนให้เห็นถึง vi (เช่นกันหากคุณกำลังเขียนฟังก์ชันเขียนทับทำไมไม่ทำให้มันส่งอาร์กิวเมนต์คงที่)
Dannid

5

คุณสามารถเพิ่มqq()ฟังก์ชันลงในไฟล์. Rprofile ได้อย่างง่ายดาย

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

ฉันคิดว่าตัวเลือกการบันทึกมีให้ใช้งานได้ แต่คำตอบของ Joshua นั้นดีที่สุด


3

ถ้าเช่นฉันการพิมพ์วงเล็บทั้งคู่ดูเหมือนจะพยายามมากเกินไปในการออกจากการจำลองคุณสามารถลองสิ่งนี้:

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

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

สิ่งนี้จะสร้างคลาสใหม่ซึ่งทำให้ R ออกจากการทำงานเมื่อพยายามพิมพ์คลาสดังกล่าว ผลที่สุดคือถ้าคุณเรียกใช้exitใน R repl ทุกอย่างจะออก (เพราะมันพยายามพิมพ์)

หมายเหตุ: คุณสามารถเพิ่ม~/.Rprofileเพื่อโหลดเมื่อเริ่มต้นทุกเซสชัน


2

เพียงแค่หลีกเลี่ยงข้อความแจ้งโดยพิมพ์q('no')แทน


21
.. ซึ่งเป็นที่นิยมมากกว่าการตอบข้อความแจ้ง :-)
TMS

2

คุณสามารถสร้างนามแฝงสำหรับคำสั่ง R:

ใช้ทุบตี :alias R='R --no-save'

ใช้ csh: alias R 'R --no-save'


-3

หากคุณรู้สึกผจญภัยมากพอคุณสามารถแก้ไขstartupส่วนท้ายได้/usr/bin/Rเช่นเพิ่ม--no-saveในการโทรของผู้บริหาร save.image()แต่ถ้าคุณต้องการที่จะประหยัดพื้นที่ทำงานของคุณอย่าลืม


1
ฉันไม่เคยแก้ไขอะไรเลยโดยตรง/usr/bin- และขอไม่แนะนำให้คุณทำเช่นนั้น นั่นคือพื้นที่ของระบบ "ห้ามบุคลากรที่ไม่ได้รับอนุญาต"
ulidtko

3
@ulidtko ถ้าเป็นระบบของฉันฉันได้รับอนุญาต :) ฉันคิดว่าเหตุผลที่แท้จริงนี่ไม่ใช่ความคิดที่ดีเพราะมันจะถูกเขียนทับโดยการอัปเกรดในอนาคต
Michael Mior

@MichaelMior ใช่คุณถูกต้องอย่างแน่นอน อย่างไรก็ตาม: มนุษย์ยุ่งเหยิง ตลอดเวลา. เป็นเพียงแนวทาง; เว้นแต่คุณจะมีเหตุผลที่ดีปล่อย/usrให้โรบ็อต (ฉันหมายถึงผู้จัดการแพ็คเกจ) เนื่องจากพวกเขาจัดการพื้นที่นั้นแล้ว มีวิธีที่จะไม่รบกวน มิฉะนั้นคุณกำลังแสวงหาการผจญภัยโดยเจตนา
ulidtko
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.