如何禁用“保存工作区图像?”在R中提示?

时间:2011-02-14 18:52:51

标签: r read-eval-print-loop

当我退出交互式R shell时,每次都会显示一个恼人的提示:

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

我总是回答“不”,因为如果我想保存我的作品,我会在尝试退出之前做

如何摆脱提示?


注意:请参阅?save.image

12 个答案:

答案 0 :(得分:71)

您可以在启动R时传递--no-save命令行参数,或者可以覆盖q函数:

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

将上面的代码放在.Rprofile中,这样它就会在每个会话的启动时运行。

答案 1 :(得分:25)

尚未找到最简单的Linux解决方案:)

在ubuntu上,将以下行添加到~/.bashrc

alias R='R --no-save'

每次使用R启动R控制台时,都会传递--no-save选项。

答案 2 :(得分:16)

您可以使用 Ctrl + D 转义“保存工作区图像?”提示。

因此,如果您在交互式R中执行 Ctrl + D 两次,则退出R而不保存工作区。

(在Linux和OS X上测试)

答案 3 :(得分:10)

如果您正在使用Rgui,请右键单击用于启动R的图标,然后单击“属性”,并将--no-save添加到启动R的命令中。

(来自http://tolstoy.newcastle.edu.au/R/help/05/03/1115.html

如果您使用的是与Rgui不同的编辑器,则必须在启动R时将--no-save传递给R命令行

答案 4 :(得分:6)

您可以轻松地将qq()函数添加到.Rprofile文件

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

我认为保存选项可以选择,但显然约书亚的答案是最好的。

答案 5 :(得分:5)

充分利用mreqBondedDust提供的两种策略:

默认为不保存,将以下行添加到〜/ .bashrc:

alias R='R --no-save'

但是通过将此添加到〜/ .Rprofile:

,给自己一个简单的方法来保存退出
qs <- function(save="yes") { q(save=save)}

所以现在q()退出而不保存(或提示),但qs()将保存并退出(也没有提示)

答案 6 :(得分:5)

覆盖退出功能的保存参数的默认选项

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

将此行放入.Rprofile

编辑:添加了q,因此无论使用哪种变体都没有提示

答案 7 :(得分:3)

如果只是通过键入q('no')

来避免提示,那该怎么办?

答案 8 :(得分:2)

您可以为R命令创建别名:

使用bash alias R='R --no-save'

使用csh: alias R 'R --no-save'

答案 9 :(得分:1)

如果像我一样输入一对括号似乎太费力退出repl你可以试试这个:

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

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

这会创建一个新类,在尝试打印所述类时会导致R退出。结果是如果你在R repl中运行exit,整个事情就会退出(因为它试图打印它)。

注意:您可以将其添加到~/.Rprofile以在每个会话开始时加载。

答案 10 :(得分:1)

如果您使用的是 R Studio IDE,您可以通过重新设置全局选项来实现。

转到工具 --> 全局选项 --> R 常规(基本)

  1. 取消选中在启动时将 .RData 还原到您的工作区
  2. 退出时将工作区图像保存到 .RData -- 选择“从不” See screenshot below

点击“应用”,然后点击“确定”

我写了一篇关于这个主题的详细帖子here

在这篇文章中,我已经解决了“我们应该还是不应该”保存工作区图像? 我已经在评论中详细回答了以下问题(请确保您已阅读所有内容):

  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

答案 11 :(得分:-2)

如果您有足够的冒险精神,还可以在startup的末尾编辑/usr/bin/R部分,即将--no-save添加到exec调用中。但是,如果您需要保存工作区,请记住save.image()