2012-10-29 40 views
3

我试图保存在R中用“for”循环创建的几个xyplots,并且我无法获得完整的pdf文件(所有文件都具有相同的大小,我不能打开它们),如果我执行下面的循环:在R中保存多个pdf文件的问题

for (i in 1:length(gases.names)) { 
    # Set ylim; 
    r_y <- round(range(ratio.cal[,i][ratio.cal[,i]<999], na.rm = T), digits = 1); 
    r_y <- c(r_y[1]-0.1, r_y[2]+0.1); 

    outputfile <- paste (path, "/cal_ratio_",gases.names[i], ".pdf", sep=""); 
    dev.new(); 
    xyplot(ratio.cal[,i] ~ data.GC.all$data.time, groups = data.vial, panel = 
     panel.superpose, xlab = "Date", ylab = gases.names[i], xaxt="n", ylim = r_y); 
    savePlot(filename = outputfile, type = 'pdf', device = dev.cur()); 
    dev.off(); 
} 

(以前的版本使用的trellis.device()代替dev.new() + savePlot()

你知道为什么我不能得到良好的PDF文件?如果我这样做“手动”它的作品...任何想法?

回答

5

使用pdf直接

for (i in seq_along(gases.names)) { 
    # Set ylim 
    r_y <- round(range(ratio.cal[,i][ratio.cal[,i]<999], na.rm = T), digits = 1) 
    r_y <- c(r_y[1]-0.1, r_y[2]+0.1) 

    outputfile <- paste (path, "/cal_ratio_",gases.names[i], ".pdf", sep="") 
    pdf(file = outputfile, width = 7, height = 7) 
    print(xyplot(ratio.cal[,i] ~ data.GC.all$data.time, groups = data.vial, 
       panel = panel.superpose, xlab = "Date", ylab = gases.names[i], 
       xaxt="n", ylim = r_y)) 

    dev.off() 

} 
+4

使用注意事项print'的',与此相关的最常见的[常见问题](http://cran.r-project.org/doc/FAQ/R-FAQ的.html#为什么-DO-lattice_002ftrellis图形 - 不work_003f)。 – joran