r - 如何在 R 中为多个绘图创建多个 pdf?
问题描述
对于每个种子,我有两个地块。对于三个种子,所有六个地块都保存在一个 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()
解决方案
基本上你可以将例程包装成一个函数并运行一个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)
注意:getwd()
除非您指定位置,否则PDF 将保存到您的文件夹中pdf(paste0("<LOCATION>/file", x, ".pdf"))
。
推荐阅读
- unit-testing - 提供但未定义的标志:-test.v
- flutter - Flutter - 如何根据按钮是在应用栏还是主屏幕中为平面按钮设置不同颜色的文本
- r - 获取 data.frame 的行并转置为一个列向量
- javascript - 如何获取 html 文件中使用的唯一标签列表?
- asynchronous - 如何在flutter中同时改变两个变量?
- javascript - How to make 3D carousel rotate automatically, no clicks required and stop at mouse hover
- javascript - 按钮单击下一个数组语句(Javascript)
- reactjs - 如何将 html div 中的 props 传递给 react 中的函数组件?
- python - Pandas Python 中的组合
- javascript - javascript中的时间和日期验证