我有一个函数可以创建一个绘图并将其保存为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.pdf
、filename-002.pdf
和filename-003.pdf
。