似乎无法在R中使用dev.off()关闭设备

问题描述 投票:5回答:1

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

我的问题是,自那个会话以来,现在我在任何笔记本中运行的每个单元格(包括新的空白单元格)都会生成不需要的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被创建?

r pdf jupyter
1个回答
0
投票

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

试试这个插上一个开放的水槽:

sink(NULL)
ht @mdsumner
© www.soinside.com 2019 - 2024. All rights reserved.