2011-01-26 9 views
20

可能性の重複:
Generate multiple graphics from within an R functionは、PDF ggplotチャートを印刷できない

非常に奇妙なことに私に起こって:次のコードは、PDFデバイスに印刷するために失敗します。

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

は、pdfファイルが生成されても、pdfには何も印刷されません。ただし、

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

は完全に正常に動作します。どんな考え? R 2.11.1で再現されました。

答えて

33

ギャッフィー、そのようなにおいはFAQ 7.22です。だからprint(qplot(1:10))を試してください。

+1

ありがとうございます。私は、直感的ではないRが時々^ Woftenであることに驚きました。私は以下の 'ggsave'アプローチが私にはもっと意味があると言わなければなりません。 –

8

なぜ@Dirkがこれが起こっているのかを説明しています(自動印刷はオフになっています)が、デバイスを開いたり、デバイス上でプロットを生成したり、デバイスを閉じたりする代わりにggsave()です。たとえば:

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

またはループ経由:

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

ことの終わりに、我々は我々が求めて生成されたすべてのプロットを持っています。

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

実際に彼のループはうまくいきます。なぜなら、彼は 'outnames'に索引をつけていないから、ただ値を使っているからです。それも私がやる方法です。 –

+0

@Gappyに添付された私自身の愚かさだった@Kenを見つけた---ノイズを削除します! –

+0

@Ken hmm何かがあなたの編集を受け入れるのを止めているようです。今投稿を編集することはできません。 –