2017-03-09 140 views
1

出於某種原因,在此循環中,它生成的PDF最終損壞。但是,當我分別繪製它們時,它會被保存,我可以打開它們。請指教,生氣!無法打開pdf圖r

for (l in 1:length(which_genes)) { 
     gene_name <- which_genes[[l]] 
     cases_values <- cases[cases$HGNC == genes[gene_name],] 
     controls_values <- controls[controls$HGNC == genes[gene_name],] 
     t <- t.test(cases_values[c(2:ncol(cases_values))], controls_values[c(2:ncol(controls_values))]) 
     case <- cbind(t(cases_values[c(2:ncol(cases_values))]), "cases") 
     cont <- cbind(t(controls_values[c(2:ncol(controls_values))]), "controls") 
     dat <- as.data.frame(rbind(case, cont)) 
     names(dat) <- c("expression", "type") 
     dat$expression <- as.numeric(dat$expression) 
     #plot significant genes 
     pdf(file = paste(genes[gene_name], "_different.pdf", sep="")) 
     ggplot(dat, aes(type, expression, fill=type)) + 
     geom_boxplot() + 
     ggtitle(paste(genes[gene_name], "pvalue", t$p.value)) + 
     xlab("cases vs controls") 
     dev.off() 
} 
+0

您可以添加數據樣本嗎? http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Travis

+0

嘗試使用Sys.sleep爲ggplot2/grid提供更多時間來完成繪圖。 – Roland

+0

@Roland我在pdf之前和之後嘗試了Sys.sleep(5),現在我可以看到從163bytes到4KB保存的情節的大小 - 仍然是腐敗的。當我沒有循環繪製時,打開的PDF保存爲5KB。你有什麼其他的建議? – user3324491

回答

1

錯誤的另一個例子(如R-FAQ中所述)。使用此而不是在循環中:

pdf(file = paste(genes[gene_name], "_different.pdf", sep="")) 
    print(ggplot(dat, aes(type, expression, fill=type)) + 
    geom_boxplot() + 
    ggtitle(paste(genes[gene_name], "pvalue", t$p.value)) + 
    xlab("cases vs controls") 
     ) 
dev.off() 

如果目標是具有多頁的輸出,那麼你應該已經打開PDF設備外循環,print -ed內環路,然後關閉設備外。