2015-11-02 65 views
5

我使用Jupyter笔记本在OSX中运行R内核(3.2.2),通过一些基本的统计练习。几天前,我第一次玩ggplot,并从笔记本电脑上运行一些命令,尝试打印到pdf文件,换句话说,使用如下内容:pdf("file.pdf"); plot(x, y); dev.off()我没有保留任何这些单元格内容,所以我看不到我跑的是什么,但我想我可以创建一些pdf并且不包含dev.off()命令?似乎无法关闭设备使用dev.off()R

我的问题是,自该会议以来,现在我在任何笔记本(包括新的空白笔记本)中运行的每个单元格都会生成不需要的pdf文件。如果该代码涉及绘制图形,则pdf包含该图形,如果代码是其他内容,则创建的PDF无法打开。我无法找到任何方式,优雅或残酷,阻止这些pdf被创建。

如果我去一个新的空白笔记本:

运行dev.list()返回pdf: 2
运行dev.cur()回报pdf: 2
运行dev.off()回报null device: 1

但随后,后立即如果,我跑要么dev.list()dev.cur()再次,他们再次返回pdf: 2

我可以打开其他新设备,并且dev.off()成功关闭它们。但是这个pdf: 2设备不会消失。我尝试终止所有会话,重新启动我的机器等,但无济于事;建议?另外,如果我在终端(即不是来自笔记本)从控制台运行pdf()命令,我的图显示为由Quartz生成;我知道这可能是一个Quartz问题,而不是一个R问题,但我的问题仍然存在,我该如何关闭这个设备,或者停止创建所有这些pdf文件?

+0

您是否尝试过运行dev.off()命令两次? dev.off(); dev.off()有时我发现我不得不关闭一个额外的设备,即使我没有打开额外的设备。 – anotherFishGuy

+0

感谢您的建议。我没有这样做,但它不起作用。它会返回'dev.off()中的错误:不能关闭设备1(空设备)',然后和之前一样,'dev.list()'和'dev.off()'继续返回'pdf:2 ' – jtd

回答

0

这可能是一个问题,当sink()已打开但未关闭,可能是因为在达到结束代码之前发生了错误。

试试这个堵塞的开放水槽:

sink(NULL) 
ht @mdsumner