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

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

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

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

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


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

12 ответов

Решение

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

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

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

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

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

alias R='R --no-save'

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

Вы можете выйти из окна " Сохранить изображение рабочего пространства? ", Нажав Ctrl+D.

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

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

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

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

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

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

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

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

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

Если вы используете R Studio IDE, вы можете сделать это, переустановив глобальный параметр.

Перейдите в Инструменты -> Глобальные параметры -> R General (Basic).

  1. Снимите флажок «Восстановить .RData в рабочей области при запуске».
  2. Сохранить изображение рабочей области в .RData при выходе - выберите «Никогда»

Нажмите «Применить», а затем «ОК».

Я написал подробный пост по этой теме здесь

В этом посте я обратился к вопросу «следует или не следует» сохранять изображение рабочего пространства? Я написал подробный ответ на следующие вопросы в комментариях (обязательно прочтите их все):

  1. Как установить никогда не сохранять изображение рабочего пространства?
  2. что на самом деле означает, когда говорится «сохранить изображение рабочего пространства».
  3. Почему вам (почти всегда) не следует сохранять изображение рабочего пространства?
  4. Когда мне следует сохранять изображение рабочего пространства?
  5. Что мне делать, если изображение рабочего пространства не сохраняется? Какие лучшие практики?

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

«Что такое воспроизводимая работа?» https://www.linkedin.com/feed/update/urn:li:activity:6789770117715640320

Почему бы вам не использовать rm(list= ls ())? Рекомендации по R https://www.linkedin.com/feed/update/urn:li:activity:6785805481131683840

Рабочий каталог https://www.linkedin.com/posts/drnishaarora_2-set-working-directory-r-studio-activity-6785423883408297984-NAoH

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

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

alias R='R --no-save'

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если вы чувствуете себя достаточно предприимчивым, вы также можете отредактировать startup раздел в конце /usr/bin/Rт.е. добавить --no-save на вызовы exec. Однако, если вам нужно сохранить рабочее пространство, не забудьте save.image(),

Другие вопросы по тегам