2011-01-26 13 views
20

Eventuali duplicati:
Generate multiple graphics from within an R functionImpossibile stampare in PDF classifiche ggplot

Molto strano cosa mi succede: il codice seguente non riesce a stampare dispositivo pdf:

outnames <- c("1.pdf", "2.pdf") 
for (n in outnames){ 
    pdf(n) 
    qplot(1:10) 
    dev.off() 
} 

non stampa nulla in pdf, anche se viene generato un file pdf. Tuttavia,

pdf(outnames[2]) 
qplot(1:10) 
dev.off() 

funzionerà perfettamente. Qualche idea del perché? Riprodotto in R 2.11.1.

risposta

33

Gappy, che odora di FAQ 7.22 - quindi prova print(qplot(1:10)).

+1

Grazie. Sono sbalordito di quanto sia controintuitivo R a volte^Woften. Devo dire che l'approccio 'ggsave' qui sotto ha più senso per me. –

8

@Dirk spiega perché questo sta accadendo (stampa automatica disattivata), ma un'alternativa all'apertura del dispositivo, generando il grafico sul dispositivo, chiudendo il dispositivo è ggsave(). Per esempio:

p1 <- qplot(1:10) 
ggsave("p1.pdf", plot = p1) 

o attraverso un ciclo:

outnames <- c("1.pdf", "2.pdf") 
for (n in outnames){ 
    p2 <- qplot(1:10) 
    ggsave(n, plot = p2) 
} 

Al termine di che abbiamo tutte le trame generate abbiamo chiesto.

> list.files(pattern = ".pdf$") 
[1] "1.pdf"     "2.pdf"     
[3] "p1.pdf" 
+1

In realtà il suo ciclo funziona bene, perché non sta indicizzando in 'outnames', sta solo usando il valore. È come lo farei anch'io. –

+0

Ben chiazzato @Ken che è stata la mia stupidità associata a @Gappy --- elimineremo il rumore! –

+0

@Ken hmm qualcosa sembra impedirmi di accettare le tue modifiche. e quindi non posso modificare il post ora ... –

Problemi correlati