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

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

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

我在尝试退出之前这样做了.765509_ d .

如何摆脱提示?


注意:请参阅?save.image

回答(11)

3 years ago

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

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

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

3 years ago

还没找到最简单的Linux解决方案:)

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

alias R='R --no-save'

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

3 years ago

你可以逃避“保存工作区图像?”用Ctrl D提示

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

(在Linux和OS X上测试过)

3 years ago

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

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

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

3 years ago

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

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

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

3 years ago

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

通过在〜/ .bashrc中添加以下行来默认为不保存:

alias R='R --no-save'

但是通过将此添加到〜/ .Rprofile,给自己一个简单的方法来保存退出:

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

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

3 years ago

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

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

把这一行放在.Rprofile中

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

3 years ago

如何通过输入 q('no') 来避免提示

3 years ago

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

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

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

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

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

3 years ago

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

using bashalias R='R --no-save'

using csh: alias R 'R --no-save'

3 years ago

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