2011-01-26 15 views
20

संभव डुप्लिकेट:
Generate multiple graphics from within an R functionपीडीएफ ggplot चार्ट में मुद्रित नहीं कर सकते

बहुत अजीब बात मेरे लिए क्या हो रहा: निम्नलिखित कोड पीडीएफ उपकरण को प्रिंट करने में विफल रहता है:

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

पीडीएफ को कुछ भी प्रिंट नहीं करेगा, भले ही एक पीडीएफ फ़ाइल उत्पन्न हो। हालांकि,

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

पूरी तरह से काम करेगा। कोई विचार क्यों? आर 2.11.1 में पुन: उत्पादित।

उत्तर

33

गैपी, FAQ 7.22 की तरह गंध करता है - तो कृपया print(qplot(1:10)) आज़माएं।

+1

धन्यवाद। मैं आश्चर्यचकित हूं कि कैसे कभी-कभी counterintuitive R^Woften है। मुझे कहना होगा कि नीचे 'ggsave' दृष्टिकोण मुझे अधिक समझ में आता है। –

8

@ डार्क बताता है कि यह क्यों हो रहा है (ऑटो प्रिंटिंग बंद हो गई है), लेकिन डिवाइस खोलने का एक विकल्प, डिवाइस पर साजिश उत्पन्न करने, डिवाइस को बंद करना 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

दरअसल उसका लूप ठीक काम करता है, क्योंकि वह 'आउटनाम' में अनुक्रमणित नहीं कर रहा है, वह सिर्फ मूल्य का उपयोग कर रहा है। यह वही तरीका है जो मैं भी करूँगा। –

+0

अच्छी तरह से देखा @ केन जो @Gappy --- से जुड़ी अपनी मूर्खता थी, शोर को हटा देगा! –

+0

@ केन हम्म मुझे लगता है कि मुझे आपके संपादन स्वीकार करने से रोकना है। और फिर मैं अब पोस्ट को संपादित नहीं कर सकता ... –