在R中将多个图另存为具有唯一名称的单独PDF

问题描述

我有一个创建绘图并将其另存为pdf文件的函数。我计划在一个循环中针对数据集的100多个列运行此函数。我的问题是如何使每个pdf文件都具有唯一的名称,这样每次制作一个新的pdf文件时都不会覆盖以前的文件。我试图使其与C整数格式一起使用 pdf(file = "~/PTY/Data/ROC Curves/ROC%03d.pdf",onefile = F,width = 7,height = 7) 可以将每个地块命名为ROC001,ROC002 ...,但仍会将每个新地块都覆盖为ROC001。

createROC <- function(x) {
  
  ROCtable <- createNAtable(x) #create dataset w/out NAs
  x_NA <-x[!is.na(x)]          #create analyte vector w/out NAs
  
  #create ROC variable
  newROC <- rocit(score = x_NA,class = ROCtable$DSM,negref = "0",method = "non")
  
  #create pdf
  pdf(file = "~/PTY/Data/ROC Curves/ROC%03d.pdf",height = 7)
                           
  #create ROC plot
  plot(newROC,legend = F)

  dev.off()
  }

我的函数将向量(data1 $ IL6,data1 $ age等)作为输入。理想情况下,我将能够在输入(IL6,年龄等)之后为每个图块加标题。

提前感谢您的帮助

解决方法

问题在于,您每次打开和关闭图形设备时,每次都会在001重置计数器。您需要先致电pdf(),然后再致电plot(),然后再致电dev.off(),就像这样:

# Some data with named columns
df <- data.frame(a = 1:10,b = 11:20,c = 21:30)

# A plotting function without `pdf()` and `dev.off()`
create_plot <- function(x,main) {
  plot(x,main = main)
}

# Open graphics device
pdf(file = "filename-%03d.pdf",onefile = FALSE)

# Apply plotting function to each column of `df` in a loop
for (j in 1:3) {
  create_plot(df[,j],names(df)[j])
}

# Close graphics device
dev.off()

这应该在您的工作目录中生成filename-001.pdffilename-002.pdffilename-003.pdf

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...