2015-11-02 28 views
5

Sto usando i notebook Jupyter che eseguono un kernel R (3.2.2) in OSX, lavorando attraverso alcuni esercizi di statistiche di base. Qualche giorno fa ho giocato con ggplot per la prima volta e ho eseguito alcuni comandi da una cella di un notebook sperimentando con la stampa in file PDF, in altre parole usando qualcosa come la seguente: pdf("file.pdf"); plot(x, y); dev.off() Non ho mantenuto nessuno di quei contenuti di cella, quindi Non riesco a vedere esattamente quello che ho eseguito, ma immagino sia possibile creare dei pdf e non includere un comando dev.off()?Non riesco a spegnere un dispositivo usando dev.off() in R

Il mio problema è che, da quella sessione, ora ogni cella che corro su qualsiasi notebook (compresi quelli nuovi vuoti) genera un file PDF indesiderato. Se quel codice coinvolge la figura, il pdf contiene quella cifra, se il codice è qualsiasi altra cosa, il pdf creato non può essere aperto. Non riesco a trovare alcun modo, elegante o brutale, per impedire la creazione di questi pdf.

Se vado a un nuovo quaderno bianco:

esecuzione dev.list() rendimenti pdf: 2
esecuzione dev.cur() rendimenti pdf: 2
esecuzione dev.off() rendimenti null device: 1

Ma allora, se subito dopo, ho funzionare sia dev.list() o dev.cur() di nuovo, ritornano di nuovo pdf: 2

Sono in grado di aprire altri nuovi dispositivi e dev.off() riesce a chiuderli. Ma questo dispositivo pdf: 2 non andrà via. Ho provato a chiudere tutte le mie sessioni, riavviare la mia macchina, ecc., Senza risultato; Suggerimenti?

Inoltre, se eseguo un comando pdf() da una console in Terminal (ad esempio, non da un notebook), i miei grafici vengono visualizzati come generati da Quartz; Capisco che potrebbe trattarsi di un problema al quarzo e non di un problema R, ma la mia domanda rimane, come posso chiudere questo dispositivo o altrimenti impedire la creazione di tutti questi PDF?

+0

Hai provato eseguendo il comando dev.off() due volte? dev.off(); dev.off() A volte trovo di dover chiudere un dispositivo in più, anche se non ne apro uno in più. – anotherFishGuy

+0

Grazie per il suggerimento. Non l'avevo fatto, ma non funziona. restituisce 'Errore in dev.off(): non può spegnere il dispositivo 1 (il dispositivo nullo)' e quindi, come prima, 'dev.list()' e 'dev.off()' continua a restituire 'pdf: 2 ' – jtd

risposta

0

Questo può essere un problema quando uno sink() è stato aperto ma non chiuso, forse perché si è verificato un errore prima del raggiungimento del codice di chiusura.

Provate a collegare un dissipatore aperta:

sink(NULL) 
ht @mdsumner