Cách tắt “Lưu hình ảnh không gian làm việc?” dấu nhắc trong R?


92

Khi tôi thoát khỏi trình bao R tương tác, nó sẽ hiển thị một lời nhắc khó chịu mỗi lần:

>
>
Lưu hình ảnh không gian làm việc? [y / n / c]: n

Tôi luôn trả lời "không" với nó, bởi vì nếu tôi muốn tiết kiệm công việc của mình, tôi sẽ làm điều đó trước khi cố gắng thoát ra.

Làm thế nào để thoát khỏi lời nhắc?


Lưu ý: xem ?save.image


7
@Spacedman: đó là Ctrl + Z trong Windows, vì vậy đừng bao giờ cố gắng "hoàn tác" bất cứ điều gì. ;-)
Joshua Ulrich

3
Trong GNU / Linux, hãy bắt đầuR --vanilla
aL3xa 14/02/11

xem thêm câu trả lời này sử dụng tùy chỉnh q()chức năng trong .Rprofie: stackoverflow.com/a/13043239/180892
Jeromy Anglim

5
cho những gì nó có giá trị, RStudio có một cái móc sở thích cho điều này
Ben Bolker

2
fwiw (also), đây là hành vi mặc định trong bảng điều khiển radian R.
Keith Hughitt

Câu trả lời:


76

Bạn có thể chuyển --no-saveđối số dòng lệnh khi khởi động R hoặc bạn có thể ghi đè qhàm:

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

Đặt đoạn mã trên vào tệp .Rprofile của bạn để mã này sẽ được chạy khi khởi động cho mọi phiên.


2
@Sacha Vì vậy, hãy xem trên stackoverflow.com/questions/1189759/…
Marek

2
Sau khi tôi cài đặt gói Mặc định và thêm mã trên vào tệp Rprofile.site (chạy R 2.15.1 trên Windows 7), tôi gặp lỗi sau: "Lỗi trong bindIsLocked (name, as.enosystem (find (name)) ): không thể tìm thấy chức năng 'tìm'"
John D. Cook

2
Gói Mặc định rõ ràng đã bị xóa.
Praxeolitic

1
Tôi nhận được "Lỗi: không thể tìm thấy chức năng" gánInNamespace "". R 3.1.2 trên OS X
Josh Hansen

5
@Josh Hansen add thư viện (utils) để .Rprofile của bạn để tìm assignInNamespace
FXQuantTrader

31

Vẫn chưa tìm thấy giải pháp Linux dễ dàng nhất :)

Trên ubuntu, hãy thêm dòng sau vào của bạn ~/.bashrc:

alias R='R --no-save'

Mỗi khi bạn khởi động bảng điều khiển R R, nó sẽ được chuyển qua --no-savetùy chọn.


2
Hoặc như @ aL3xa được chỉ định trong nhận xét ở trên sử dụng R --vanillađể kết hợp Combine --no-save, --no-restore, --no-site-file, --no-init-file and --no-environ.
Paul Rougieux

23

Bạn có thể thoát khỏi lời nhắc " Lưu hình ảnh không gian làm việc? " Bằng dấu Ctrl+D.

Do đó, nếu bạn thực hiện Ctrl+Dhai lần trong R tương tác, thì bạn thoát R mà không lưu vùng làm việc của mình.

(Đã thử nghiệm trên Linux và OS X)


11

Nếu bạn đang sử dụng Rgui, hãy nhấp chuột phải vào biểu tượng bạn sử dụng để khởi động R và nhấp vào "Thuộc tính", và thêm --no-save vào lệnh khởi động R.

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

Nếu bạn đang sử dụng trình soạn thảo khác với Rgui, bạn phải chuyển --no-save vào dòng lệnh R khi khởi động R


Bạn có thể vui lòng chia sẻ ảnh chụp màn hình của tab thuộc tính không?
Ashrith

8

Ghi đè tùy chọn mặc định cho lưu đối số của hàm thoát

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

đặt dòng này trong .Rprofile

Chỉnh sửa: đã thêm q, vì vậy không có lời nhắc cho dù biến thể nào được sử dụng


> formals (thoát) $ save <- "no"> q () Lưu hình ảnh vùng làm việc? [y / n / c]:
O.rka

5

Bạn có thể dễ dàng thêm một qq()hàm vào tệp .Rprofile

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

Tôi nghĩ rằng tùy chọn lưu có sẵn với các tùy chọn, nhưng rõ ràng câu trả lời của Joshua là tốt nhất.


5

Tận dụng tối đa cả hai chiến lược do mreqBondedDust đưa ra :

Mặc định không lưu bằng cách thêm dòng sau vào ~ / .bashrc của bạn:

alias R='R --no-save'

Nhưng hãy tạo cho mình một cách dễ dàng để tiết kiệm khi thoát bằng cách thêm cái này vào ~ / .Rprofile:

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

Vì vậy, bây giờ q()thoát mà không lưu (hoặc nhắc) nhưng qs()sẽ lưu và thoát (cũng không cần nhắc)


3

Làm thế nào về chỉ tránh nhắc bằng cách gõ q('no')thay vì


20
.. mà số lần truy cập bàn phím thậm chí còn nhiều hơn là trả lời lời nhắc :-)
TMS

3

Nếu, giống như tôi, việc gõ ra cả một cặp dấu ngoặc có vẻ như tốn quá nhiều công sức để thoát khỏi repl, bạn có thể thử cách này:

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

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

Điều này tạo ra một lớp mới, khiến R thoát ra khi cố gắng in lớp đó. Kết quả là nếu bạn chạy exittrong R repl, toàn bộ sẽ thoát ra (vì nó cố gắng in nó).

NB: Bạn có thể thêm nó vào ~/.Rprofileđể tải vào đầu mỗi phiên.


2

Bạn có thể tạo bí danh cho lệnh R:

sử dụng bash :alias R='R --no-save'

sử dụng csh: alias R 'R --no-save'


-2

Nếu bạn cảm thấy đủ mạo hiểm, bạn cũng có thể chỉnh sửa startupphần ở cuối /usr/bin/R, tức là thêm --no-savevào các lệnh gọi thực thi. Tuy nhiên, nếu bạn cần lưu không gian làm việc của mình, hãy nhớ save.image().


1
Tôi không bao giờ trực tiếp chỉnh sửa bất cứ điều gì dưới đây /usr/bin- và thực sự không khuyến khích bạn làm như vậy. Đó là khu vực hệ thống, "nhân viên không được phép bị cấm".
ulidtko

3
@ulidtko Nếu đó là hệ thống của tôi, tôi được ủy quyền :) Tôi nghĩ lý do thực sự mà đây không phải là ý kiến ​​hay là vì nó sẽ bị ghi đè bởi các bản nâng cấp trong tương lai.
Michael Mior 25/09/17

@MichaelMior vâng, bạn hoàn toàn chính xác; tuy nhiên: con người làm rối tung lên. Mọi lúc. Nó chỉ đơn giản là một kim chỉ nam; trừ khi bạn có lý do chính đáng, hãy /usrđể người máy (ý tôi là người quản lý gói) vì chúng đã quản lý khu vực đó. Có nhiều cách để không can thiệp. Nếu không, bạn đang có mục đích tìm kiếm những cuộc phiêu lưu.
ulidtko
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.