使用前循环在PDF中绘制多个图

问题描述

我努力使用for-loop.s创建李克特图。

我使用此代码创建李克特图(使用results[[x]] <- likert(questions[[x]])

pdf(file=paste0(getwd(),"/dir/","name","plot.pdf") )
plot(results[[1]],type="bar")
dev.off()

在称为独立图时,将为每个图正确创建PDF。 但是,当我要遍历数据以为绘图创建多个PDF时,将创建文件,但无法打开文件

for (x in 1:length(results)) {
  pdf(file=paste0(getwd(),categories[x],"-plot.pdf") )
  plot(results[[x]],type="bar")
  dev.off()
}

但是在终端中致电file name-plot.pdf给我:

name-likert.pdf: PDF document,version 1.4

我现在很困惑,因为我已经成功使用了几次以下代码

for(l in 1:length(lquestions))
  pdf(file=paste0(getwd(),categories[l],".pdf") )
  par(mfrow=c(4,3))
  for(i in 1:(length(questions[[categories[l]]] ))  ){
    bp <- barplot(questions[categories[l]][[1]][[i]])
  }
  dev.off()  
}
  • 如何修复代码以正确创建PDF?
  • 当尝试为绘图创建多个PDF时,为什么两个代码段的工作方式如此不同?

更新

我刚刚发现,遵循this answer,可以将图正确地放入PDF:

for(...){
  [...]
  plots[[x]] <- plot(results[[x]],type="bar")
}

pdf(file=paste0(getwd(),"plots.pdf") )
for (i in 1:length(plots)) {
  print(plots[[i]])
}
dev.off()

我仍然有兴趣了解那里发生的事情以及为什么它在第一次循环中不起作用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)