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

uli*_*tko 88 r read-eval-print-loop

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

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

我总是回答"不",因为如果我想保存我的工作,我会尝试退出之前这样做.

如何摆脱提示?


注意:见 ?save.image

Jos*_*ich 74

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

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

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

  • @Josh Hansen将库(utils)添加到.Rprofile中以查找assignInNamespace (5认同)
  • 当我添加时,我还收到“Error in utils::assignInNamespace("q", function(save = "no", status = 0, : Locked Binding of 'q'无法更改)'R v3.4.2`它到我的“.Rprofile”,但当我在终端中交互运行该命令时,不会出现此错误。 (3认同)
  • @Sacha所以看看http://stackoverflow.com/questions/1189759/expert-r-users-whats-in-your-rprofile (2认同)
  • 安装Defaults包并将上面的代码添加到我的Rprofile.site文件(在Windows 7上运行R 2.15.1)后,我收到以下错误:"bindingIsLocked中的错误(name,as.environment(find(name)) ):找不到函数'find'" (2认同)
  • Defaults包显然已被删除. (2认同)
  • 让我 **警告** 你们,在 `~/.Rprofile` 中使用 `library(foobar)` 已经破坏了我通过 `?install.packages` 调用的几个构建(在本机 C 或 Fortran 编译期间,驱动程序/包装器R 中的脚本开始失败)。准备好评论,以防万一。 (2认同)

mre*_*req 28

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

在ubuntu上添加以下行~/.bashrc:

alias R='R --no-save'
Run Code Online (Sandbox Code Playgroud)

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

  • 或者在上面的评论中指定的@ aL3xa使用`R --vanilla`来组合`Combine --no-save, - no-restore, - no-site-file, - no-init-file和 - 无environ`. (2认同)

Hug*_*ler 18

您可以使用a转义" 保存工作区图像? "提示符Ctrl+D.

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

(在Linux和OS X上测试过)


And*_*rie 11

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

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

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


Dr *_*ora 8

如果您使用的是 R Studio IDE,则可以通过重新设置全局选项来完成此操作。

\n

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

\n
    \n
  1. 取消选中启动时将 .RData 恢复到工作区
  2. \n
  3. 退出时将工作区图像保存到 .RData -- 选择“从不”\n请参阅下面的屏幕截图
  4. \n
\n

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

\n

在这里写了一篇关于这个主题的详细文章

\n

在这篇文章中,我解决了“我们应该还是不应该”保存工作区图像?\n我已经在评论中写下了以下问题的详细答案(请确保您全部阅读):

\n
    \n
  1. 如何设置不保存工作区图像?
  2. \n
  3. 当它说 \xe2\x80\x98save 工作空间图像\xe2\x80\x99 时,它的真正含义是什么。
  4. \n
  5. 为什么你不应该(几乎总是)不保存工作区图像?
  6. \n
  7. 我应该什么时候保存工作区图像?
  8. \n
  9. 如果不保存工作区图像,我该怎么办?最佳实践是什么?
  10. \n
\n

在其他一些帖子中,我讨论了可能对 R 用户有用的内容:

\n

\'什么是可重复工作?\'\n https://www.linkedin.com/feed/update/urn:li:activity:6789770117715640320

\n

为什么不应该使用 rm(list=ls())?R 最佳实践\n https://www.linkedin.com/feed/update/urn:li:activity:6785805481131683840

\n

工作目录\n https://www.linkedin.com/posts/drnishaarora_2-set-working-directory-r-studio-activity-6785423883408297984-NAoH

\n


Paf*_*ucy 7

覆盖退出函数的save参数的默认选项

formals(quit)$save <- formals(q)$save <- "no"
Run Code Online (Sandbox Code Playgroud)

把这一行放在.Rprofile中

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


42-*_*42- 6

您可以轻松地将qq()功能添加到.Rprofile文件中

 qq <- function(save="no") { q(save=save)}
Run Code Online (Sandbox Code Playgroud)

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


fly*_*ger 5

充分利用mreqBondedDust给出的两种策略:

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

alias R='R --no-save'
Run Code Online (Sandbox Code Playgroud)

但是,通过将其添加到〜/ .Rprofile中,可以为自己提供退出退出的简单方法:

qs <- function(save="yes") { q(save=save)}
Run Code Online (Sandbox Code Playgroud)

因此,现在q()退出时不保存(或不提示),但qs()将保存并退出(也不提示)