如何为R中的多个绘图创建多个pdf?

如何为R中的多个绘图创建多个pdf?,r,pdf,plot,R,Pdf,Plot,对于每颗种子,我有两块地。对于三个种子,所有六个绘图都保存到一个pdf中。但我希望每个种子都有单独的pdf格式。例如,对于第一个种子,我需要两个pdf,一个用于sample[,1],另一个用于sample[,2]。其余的种子也一样 pdf(file = "example plots.pdf") library(LearnBayes) seeds <- c(314159,523626,626789) for (seed in seeds) { set.seed(seed) x <

对于每颗种子,我有两块地。对于三个种子,所有六个绘图都保存到一个pdf中。但我希望每个种子都有单独的pdf格式。例如,对于第一个种子,我需要两个pdf,一个用于
sample[,1]
,另一个用于
sample[,2]
。其余的种子也一样

pdf(file = "example plots.pdf")
library(LearnBayes)
seeds <- c(314159,523626,626789)
for (seed in seeds) {
  set.seed(seed)
  x <- c(11, 5, 2, -5, 7, 2, -11, 9, -5, -5, -4, 17, 2, -10, -11, -10,
         -4, 2, 1, 13)
  a <- 0.1
  b <- 0.1
  c <- 0
  d <- 100^2
  M <- 1e3
  sample <- array(NA, dim=c(M,2))
  mu <- mean(x)
  sig2 <- var(x)
  for( m in 1:M ){
    mu <- rnorm(1, (length(x) + 1/d)^(-1) * (sum(x) + c/d),
                sqrt( sig2/(length(x) + 1/d) ))
    sig2 <- rigamma(1, .5*length(x)+a+.5,
                    .5*sum( (x-mu)^2 ) + 1/(2*d)*(mu-c)^2 + b )
    sample[m,] <- c(mu,sig2)
  }

  par(mfrow=c(1,2))
  plot( density( sample[,1] ), main=paste("plot_1 for seed", seed))
  plot( density( sample[,2] ), main = paste("plot_2 for seed", seed))
  setwd("C:/Users/mnudd/Desktop/StackExchange")
  save(sample,file =paste0("hrs_sample_4Q_", seed, ".RData"))

}
dev.off()
pdf(file=“example plots.pdf”)
图书馆(LearnBayes)

seeds基本上,您可以将例程包装成一个函数,然后运行
sapply
循环

seeds <- c(314159, 523626, 626789)

FUN <- function(x) {
  pdf(paste0("file", x, ".pdf"))  # initialize .pdf device
  set.seed(x)  # use seed from `sapply` loop
  # do stuff and plot.............................
  samp <- replicate(2, rnorm(1e3), simplify=FALSE)
  op <- par(mfrow=c(1, 2))
  lapply(samp, plot)
  par(op)
  # ..............................................
  dev.off()  # close .pdf device
  }
sapply(seeds, FUN)

seeds基本上,您可以将例程包装成一个函数并运行
sapply
循环

seeds <- c(314159, 523626, 626789)

FUN <- function(x) {
  pdf(paste0("file", x, ".pdf"))  # initialize .pdf device
  set.seed(x)  # use seed from `sapply` loop
  # do stuff and plot.............................
  samp <- replicate(2, rnorm(1e3), simplify=FALSE)
  op <- par(mfrow=c(1, 2))
  lapply(samp, plot)
  par(op)
  # ..............................................
  dev.off()  # close .pdf device
  }
sapply(seeds, FUN)

seeds这是您的代码,其中包含一些修改(用注释标记),可以根据需要保存绘图。前面代码的问题是,您的pdf绘图被覆盖,因为它只被调用了一次,名为
pdf(file=“example plots.pdf”)
。我修改了代码,这样您可以用不同的名称保存3个pdf绘图

#Moved wd outside the loop
setwd("C:/Users/mnudd/Desktop/StackExchange")
for (seed in seeds) {
  set.seed(seed)
  x <- c(11, 5, 2, -5, 7, 2, -11, 9, -5, -5, -4, 17, 2, -10, -11, -10,
         -4, 2, 1, 13)
  a <- 0.1
  b <- 0.1
  c <- 0
  d <- 100^2
  M <- 1e3
  sample <- array(NA, dim=c(M,2))
  mu <- mean(x)
  sig2 <- var(x)
  for( m in 1:M ){
    mu <- rnorm(1, (length(x) + 1/d)^(-1) * (sum(x) + c/d),
                sqrt( sig2/(length(x) + 1/d) ))
    sig2 <- rigamma(1, .5*length(x)+a+.5,
                    .5*sum( (x-mu)^2 ) + 1/(2*d)*(mu-c)^2 + b )
    sample[m,] <- c(mu,sig2)
  }

  par(mfrow=c(1,2))
  #Moved pdf inside the loop and modified the name of the saved file
  pdf(file = paste0("example_plots_", seed,".pdf"))
  plot( density( sample[,1] ), main=paste("plot_1 for seed", seed))
  plot( density( sample[,2] ), main = paste("plot_2 for seed", seed))
  #Moved dev.off inside the loop
  dev.off()

  save(sample,file =paste0("hrs_sample_4Q_", seed, ".RData"))

}
#将wd移出循环
setwd(“C:/Users/mnudd/Desktop/StackExchange”)
用于(种子中的种子){
种子(种子)

x这是您的代码,经过一些修改(用注释标记),可以按您的需要保存绘图。以前代码的问题是,您的pdf绘图被覆盖了,因为它只被调用了一次,名为
pdf(file=“example plots.pdf”)
。我修改了代码,所以您保存了3个不同名称的pdf绘图

#Moved wd outside the loop
setwd("C:/Users/mnudd/Desktop/StackExchange")
for (seed in seeds) {
  set.seed(seed)
  x <- c(11, 5, 2, -5, 7, 2, -11, 9, -5, -5, -4, 17, 2, -10, -11, -10,
         -4, 2, 1, 13)
  a <- 0.1
  b <- 0.1
  c <- 0
  d <- 100^2
  M <- 1e3
  sample <- array(NA, dim=c(M,2))
  mu <- mean(x)
  sig2 <- var(x)
  for( m in 1:M ){
    mu <- rnorm(1, (length(x) + 1/d)^(-1) * (sum(x) + c/d),
                sqrt( sig2/(length(x) + 1/d) ))
    sig2 <- rigamma(1, .5*length(x)+a+.5,
                    .5*sum( (x-mu)^2 ) + 1/(2*d)*(mu-c)^2 + b )
    sample[m,] <- c(mu,sig2)
  }

  par(mfrow=c(1,2))
  #Moved pdf inside the loop and modified the name of the saved file
  pdf(file = paste0("example_plots_", seed,".pdf"))
  plot( density( sample[,1] ), main=paste("plot_1 for seed", seed))
  plot( density( sample[,2] ), main = paste("plot_2 for seed", seed))
  #Moved dev.off inside the loop
  dev.off()

  save(sample,file =paste0("hrs_sample_4Q_", seed, ".RData"))

}
#将wd移出循环
setwd(“C:/Users/mnudd/Desktop/StackExchange”)
用于(种子中的种子){
种子(种子)

x您可以在
for
循环中移动
pdf
dev.off
。我只为第一个种子获取一个pdf。您可以在
for
循环中移动
pdf
dev.off
。我只为第一个种子获取一个pdf。