将多个绘图保存为具有R中唯一名称的单个PDF



我有一个函数可以创建一个绘图并将其保存为pdf文件。我计划在一个数据集的100多列的循环中运行这个函数。我的问题是如何使每个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", onefile = F, width = 7, 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

最新更新