Ho uno script R che salva alcuni grafici usando ggsave. Quando eseguo lo script dalla riga di comando, non solo salva i miei grafici ma anche un file Rplots.pdf vuoto. Come posso evitare che R crei questo file non necessario?Come interrompere R dalla creazione di file Rplots.pdf vuoto quando si utilizza ggsave e Rscript
Ecco uno script di esempio che riproduce l'errore:
#!/usr/bin/env Rscript
# Code that creates unnecessary Rplots.pdf file
library(ggplot2)
my.data <- data.frame(x = 1:10, y = 1:10)
my.plot <- qplot(x, y, data = my.data)
ggsave('example.png', my.plot)
Tutte le seguenti modalità di esecuzione dello script creare il file non necessari:
Rscript script.R
Rscript --vanilla script.R
chmod a+x script.R
./script.R
Inoltre, quando ho fonte il codice dall'interno una sessione interattiva, si apre una finestra vuota di R Graphics Device non necessaria.
Inoltre, non ho questi problemi se uso il il seguente codice più dettagliato al posto di ggsave:
#!/usr/bin/env Rscript
# Code that does NOT create unnecessary Rplots.pdf file
library(ggplot2)
my.data <- data.frame(x = 1:10, y = 1:10)
my.plot <- qplot(x, y, data = my.data)
png(file = 'example.png')
print(my.plot)
dev.off()
Ecco il mio informazioni di sessione (che è lo stesso se in esecuzione rscript o in modo interattivo):
R version 3.0.1 (2013-05-16)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=C LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] methods stats graphics grDevices utils datasets base
other attached packages:
[1] ggplot2_0.9.3.1
loaded via a namespace (and not attached):
[1] colorspace_1.2-2 dichromat_2.0-0 digest_0.6.3 grid_3.0.1
[5] gtable_0.1.2 labeling_0.1 MASS_7.3-26 munsell_0.4
[9] plyr_1.8 proto_0.3-10 RColorBrewer_1.0-5 reshape2_1.2.2
[13] scales_0.2.3 stringr_0.6.2
Se specifico un altezza e la larghezza in 'ggsave' sembra risolvere il problema, ma confesso che non so subito perché ... se dovessi indovinare è perché i valori di default sono le dimensioni della "finestra di plottaggio corrente" che avrebbe bisogno di esistere prima che potesse misurarli. – joran
Ho eseguito 'ggsave' e non ho creato' RPlots.pdf', solo 'example.pdf'. 'ggsave' è relativamente semplice in modalità' debug', si può provare e vedere quale funzione 'device' sta chiamando. –
Vedo questo comportamento e la specifica degli argomenti di altezza e larghezza sembra risolverlo sia in una sessione interattiva che utilizzando RScript. – joran