Як вимкнути "Зберегти зображення робочої області?" підказка в R?


92

Коли я виходжу з інтерактивної оболонки R, вона кожного разу відображає дратує запит:

>
>
Зберегти зображення робочої області? [y / n / c]: н

Я завжди відповідаю "ні", бо, якщо я хочу зберегти свою роботу, я б це зробив, перш ніж вийти.

Як позбутися підказки?


Примітка: див ?save.image


7
@Spacedman: у Windows це Ctrl + Z, тому ніколи не намагайтеся щось «скасувати». ;-)
Джошуа Ульріх

3
У GNU / Linux стартR --vanilla
aL3xa

Дивись також ця відповідь , використовуючи призначену для користувача q()функцію в .Rprofie: stackoverflow.com/a/13043239/180892
Jeromy Anglim

5
для чого це варте, RStudio має для цього гачок уподобань
Бен Болкер

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/…
Марек

2
Після того, як я встановив пакет за замовчуванням і додав наведений вище код до мого файлу Rprofile.site (під управлінням R 2.15.1 в Windows 7), я отримую таку помилку: "Помилка в прив'язціIsLocked (ім'я, як ): не вдалося знайти функцію "знайти" "
Джон Д. Кук,

2
Пакет за замовчуванням видалено.
Праксеоліт

1
Я отримую "Помилка: не вдалося знайти функцію" assignInNamespace "". R 3.1.2 на OS X
Джош Хансен,

5
@Josh Hansen додає бібліотеку (utils) до вашого .Rprofile, щоб знайти assignInNamespace
FXQuantTrader

31

Ще не знайшов найпростішого рішення для Linux :)

На ubuntu додайте наступний рядок до вашого ~/.bashrc:

alias R='R --no-save'

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


2
Або як @ aL3xa, зазначений у коментарі вище, використовуйте R --vanillaдля комбінування Combine --no-save, --no-restore, --no-site-file, --no-init-file and --no-environ.
Paul Rougieux

23

Ви можете уникнути запиту " Зберегти зображення робочої області? " За допомогою Ctrl+D.

Таким чином, якщо ви робите Ctrl+Dдвічі в інтерактивній R, тоді ви виходите з R, не зберігаючи робочу область.

(Тестується на Linux та OS X)


11

Якщо ви використовуєте Rgui, клацніть правою кнопкою миші на піктограмі, яку ви використовуєте для запуску R, і натисніть "Властивості", а потім додайте --no-save до команди, яка запускає R.

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

Якщо ви використовуєте інший редактор, ніж Rgui, вам доведеться передати --no-save в командний рядок R під час запуску R


Чи можете ви поділитися скріншотом вкладки властивостей?
Ашріт,

8

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

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

помістіть цей рядок у .Rprofile

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


> формали (вийти) $ save <- "ні"> q () Зберегти зображення робочої області? [р / п / с]:
О.рка

5

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

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

Я думав, що опція збереження доступна з опціями, але, мабуть, відповідь Джошуа найкраща.


5

Отримайте найкраще з обох стратегій, наданих mreq та BondedDust :

За замовчуванням не зберігати, додавши наступний рядок до вашого ~ / .bashrc:

alias R='R --no-save'

Але дайте собі простий спосіб заощадити на виході, додавши це до ~ / .Rprofile:

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

Отже, зараз q()завершує роботу без збереження (або підказки), але qs()зберігатиметься і виходитиме (також без підказки)


3

Як би просто уникнути запиту, набравши q('no')замість цього


20
.. що навіть більше натискань на клавіатурі, ніж відповідь на запит :-)
TMS

3

Якщо, як і я, введення цілої пари дужок здається занадто великим зусиллям для виходу з repl, ви можете спробувати це:

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

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

Це створює новий клас, який змушує R виходити при спробі надрукувати згаданий клас. Результатом є те, що якщо ви запустите exitв R repl, все вийде (тому що він намагається його надрукувати).

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


2

Ви можете створити псевдонім для команди R:

за допомогою bash :alias R='R --no-save'

за допомогою csh: alias R 'R --no-save'


-2

Якщо ви відчуваєте себе досить авантюрними, ви можете також відредагувати startupрозділ наприкінці /usr/bin/R, тобто додати --no-saveдо викликів exec. Однак якщо вам потрібно зберегти робочу область, пам’ятайте про це save.image().


1
Я ніколи ніколи безпосередньо нічого не редагую /usr/bin- і настійно відмовляю вас це робити. Це системна область, "несанкціонований персонал заборонений".
ulidtko

3
@ulidtko Якщо це моя система, я уповноважений :) Я думаю, що справжньою причиною цього не є хороша ідея, тому що вона буде замінена майбутніми оновленнями.
Michael Mior

@MichaelMior ну так, ви абсолютно праві; проте: люди псують. Весь час. Це просто орієнтир; якщо у вас немає вагомих причин, залиште /usrроботів (я маю на увазі менеджерів пакетів), оскільки вони вже управляють цією областю. Є способи не втручатися. В іншому випадку ви цілеспрямовано шукаєте пригод.
ulidtko
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.