清除RStudio中所有图形的代码

85

我有清除工作区的代码:rm(list=ls()) 和清除控制台的代码:cat("\014")

是否有用于清除Rstudio中所有图形的代码?

5个回答

88

dev.off() 用于关闭当前绘图设备。只要我此时没有打开其他绘图设备,它就会清除RStudio中所有的绘图。如果你有其他绘图设备打开,则可以使用dev.list()来确定哪个是RStudio的绘图设备。以下代码“应该”可以做到这一点,但我没有进行彻底测试。

dev.off(dev.list()["RStudioGD"])

但是如果你没有做其他事情,只是使用dev.off()就可以处理它。


7
关于被接受的答案有一个警告。在RStudio控制台中,这可以毫无问题地运行,但是如果在脚本中使用它(例如,与其他OP提到的项目一起,在每次运行特定脚本时清除环境),则会出现奇怪的结果。第二次运行后,您将无法通过生成的图表列表进行向后点击,而且会弹出关于无法打开连接或找不到临时文件的失败和警告;似乎从脚本中运行时没有清除“plots”历史记录? - mojoronomous
(Mac OSX Yosemite和Windows 7,RStudio 0.99.486) - mojoronomous
@mojoronomous 对我来说运行良好。在Ubuntu上运行RStudio 0.99.484。 - Dason
在RStudio(v1.1.463,Linux x86_64)中编写R markdown时,这并没有帮助。图形仍然存在。运行->重新启动R并清除输出就可以解决问题了。 - mjkrause

45

dev.off() 只在交互式会话中有效。如果你想在脚本中实现这种行为,应该使用:

graphics.off()

替代方案。


1
这似乎不是一种改进。在脚本中,graphics.off()和dev.off()都会导致与mojoronomous所描述的完全相同的问题/错误。(RStudio 1.0.44,R 3.3.2) - g g
非常棒的解决方案!这解决了我的图形中出现的空白正方形问题。谢谢! - Joao Fonseca

9
为了避免在没有图形需要清除的情况下出现错误消息:
if(!is.null(dev.list())) dev.off()

虽然这个解决方案有效,但在第二次运行时循环浏览图表时会出现错误。错误已在此处报告:https://github.com/rstudio/rstudio/issues/3117 - Nav

7

我通常使用

while (dev.cur()>1) dev.off()

由于我经常使用RGL,因此我经常添加:

while (rgl.cur()) rgl.close()

6

我已经尝试了这个方法,似乎运行正常,没有报告任何错误:

# Clear all plots
try(dev.off(dev.list()["RStudioGD"]),silent=TRUE)
try(dev.off(),silent=TRUE)

我将来自其他答案的说明与一个关于错误处理的回答合并在一起,这里:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接