2015-11-02 477 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