it-swarm-ru.tech

Как отключить «Сохранить изображение рабочего пространства?» Подскажите в R?

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

> 
> 
 Сохранить изображение рабочего пространства? [y/n/c]: n 

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

Как избавиться от подсказки?


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

85
ulidtko

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

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

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

72
Joshua Ulrich

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

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

alias R='R --no-save'

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

26
mreq

Вы можете избежать запроса "Сохранить изображение рабочей области?" с помощью Ctrl+D,.

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

(Проверено на Linux и OS X)

17
Hugo Ideler

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

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

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

10
Andrie

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

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

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

6
42-

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

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

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

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

5
Pafnucy

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

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

alias R='R --no-save'

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

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

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

5
flyingfinger

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

3
Stedy

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

используя bash: alias R='R --no-save'

используя csh:alias R 'R --no-save'

2
wizmer

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

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

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

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

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

1
snakeoilsales