Как отключить «Сохранить изображение рабочего пространства?»подскажите в R? - PullRequest
85 голосов
/ 14 февраля 2011

Когда я выхожу из интерактивной оболочки R, она каждый раз отображает раздражающее приглашение:

>
>
Save workspace image? [y/n/c]: n

Я всегда отвечаю «нет», потому что, если я хочу сохранить свою работу, ясделать это до попытки выхода.

Как избавиться от приглашения?


Примечание: см. ?save.image

Ответы [ 11 ]

72 голосов
/ 14 февраля 2011

Вы можете передать аргумент командной строки --no-save при запуске R или переопределить функцию q:

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

Поместите приведенный выше код в свой .Rprofile, чтобы он запускался при запуске для каждой сессии.

26 голосов
/ 01 апреля 2013

Еще не нашли простейшего решения для Linux:)

В Ubuntu добавьте следующую строку в ~/.bashrc:

alias R='R --no-save'

Каждый раз, когда вы запускаете консоль R с R, ей передается опция --no-save.

17 голосов
/ 23 ноября 2012

Вы можете выйти из приглашения « Сохранить изображение рабочего пространства? » с помощью Ctrl + D .

Таким образом, если вы дважды нажмете Ctrl + D в интерактивном R, то вы выйдете из R без сохранения рабочего пространства.

(протестировано в Linux и OS X)

10 голосов
/ 14 февраля 2011

Если вы используете Rgui, щелкните правой кнопкой мыши по значку, который вы используете для запуска R, выберите «Свойства» и добавьте --no-save к команде, запускающей R.

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

Если вы используете редактор, отличный от Rgui, вы должны передать --no-save в командную строку R при запуске R

6 голосов
/ 29 июня 2013

Вы можете легко добавить функцию qq() в файл .Rprofile

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

Я думал, что опция сохранения была доступна с опциями, но, очевидно, ответ Джошуа лучше.

5 голосов
/ 05 июля 2016

Параметр перезаписи по умолчанию для сохранить аргумент выйти функция

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

поместить эту строку в .Rprofile

Изменить: добавлено q, поэтому нет подсказки, какой бы вариант не использовался

5 голосов
/ 16 января 2014

Получите лучшее из обеих стратегий, заданных mreq и BondedDust :

По умолчанию, чтобы не сохранять, добавив следующую строку в ~ / .bashrc:

alias R='R --no-save'

Но дайте себе простой способ сэкономить при выходе, добавив его в ~ / .Rprofile:

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

Так что теперь q() завершает работу без сохранения (или подсказок), но qs() сохранит и выйдет (также без запроса)

3 голосов
/ 15 февраля 2011

Как насчет того, чтобы просто избежать приглашения, набрав q('no') вместо

2 голосов
/ 29 июня 2013

Вы можете создать псевдоним для команды R:

с использованием bash : alias R='R --no-save'

с использованием csh: alias R 'R --no-save'

1 голос
/ 29 мая 2018

Если, как и я, ввод всей пары скобок кажется слишком большим усилием для выхода из repl, вы можете попробовать это:

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

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

Это создает новый класс, который вызывает R для выхода, когдапытаясь напечатать указанный класс.В результате, если вы запустите exit в реплее R, все завершится (потому что он пытается напечатать его).

Примечание: вы можете добавить его в ~/.Rprofile для загрузки в началекаждой сессии.

...