当我退出交互式R shell时,每次都会显示一个恼人的提示:
> > Save workspace image? [y/n/c]: n
我总是回答“不”,因为如果我想保存我的作品,我会在尝试退出之前做。
如何摆脱提示?
注意:请参阅?save.image
答案 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)
充分利用mreq和BondedDust提供的两种策略:
默认为不保存,将以下行添加到〜/ .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 常规(基本)
点击“应用”,然后点击“确定”
我写了一篇关于这个主题的详细帖子here
在这篇文章中,我已经解决了“我们应该还是不应该”保存工作区图像? 我已经在评论中详细回答了以下问题(请确保您已阅读所有内容):
在其他一些帖子中,我讨论了可能对 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
答案 11 :(得分:-2)
如果您有足够的冒险精神,还可以在startup
的末尾编辑/usr/bin/R
部分,即将--no-save
添加到exec调用中。但是,如果您需要保存工作区,请记住save.image()
。