2011-01-26 8 views
20

Duplicar posibles:
Generate multiple graphics from within an R functionNo se puede imprimir gráficos ggplot pdf

Muy extraño lo que me pasa: el siguiente código no se imprime al dispositivo pdf:

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

no imprimirá nada en pdf, aunque se haya generado un archivo pdf. Sin embargo,

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

funcionarán perfectamente. ¿Alguna idea de por qué? Reproducido en R 2.11.1.

Respuesta

33

Gappy, huele como FAQ 7.22 - así que intente print(qplot(1:10)).

+1

Gracias. Me sorprende lo contradictorio que a veces^Woften es. Debo decir que el enfoque 'ggsave' a continuación tiene más sentido para mí. –

8

@Dirk explica por qué ocurre esto (impresión automática desactivada), pero una alternativa para abrir el dispositivo, generar la trama en el dispositivo, cerrar el dispositivo es ggsave(). Por ejemplo:

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

o por medio de un bucle:

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

Al final de que tenemos todas las parcelas generadas pedimos.

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

En realidad, su bucle funciona bien, porque no está indexando en 'nombres', simplemente está usando el valor. Es la forma en que yo también lo haría. –

+0

Bien manchado @Ken que era mi propia estupidez unida a @Gappy --- eliminará el ruido! –

+0

@Ken hmm algo parece estar impidiendo que acepte sus ediciones. y luego tampoco puedo editar la publicación tampoco ... –

Cuestiones relacionadas