0

我需要构建一个函数来绘制多个 pdf,读入它们,组合结果(不同大小的 pdf),保存组合文件并删除初始文件。我对以交互方式将多个绘图绘制到外部 pdf 的初始部分感到困惑。问题是我需要一种在for循环中暂停的方法,等待情节,然后在收到情节后继续前进。我认为readLines这是要走的路(可能是这样),但这不起作用(即没有产生任何情节)。

我怎样才能让 Rpdf在剧情之间暂停,继续前进dev.off并再次重复整个过程?期望的结果是在 wd 中有三个文件,称为file1.pdf,file2.pdffile3.pdf. 同样,在运行 loop/ 之后lapply,这个过程将是交互式的。

这是问题的MWE:

widths <- c(10, 9, 8)
heights <- c(11, 9, 7)
file <- "foo.pdf"
lapply(1:3, function(i) {  #will askfor/take 3 plots interactively
    qo <- gsub(".pdf", paste0(i, ".pdf"), file, fixed = TRUE)
    cat("plot now...")
    pdf(file=qo, width = widths[i], height = heights[i])
#pause command here
    dev.off()
})

#the interactive part
plot(1:10)
plot(1:13)
plot(1:15)  

编辑 1 相关问题: 确定 ghostscript 版本

编辑 2这是我使用此信息创建的包的链接-单击此处-

4

2 回答 2

2

就这么简单吗?

for(i in 1:3){
  cat(i, "\n")
  cat("plot now...")
  readLines(n=1)
}

stdin这将停止从(即控制台)读取单行。按 Enter 继续。

于 2013-01-16T22:01:32.607 回答
2

你在寻找这样的东西吗?

widths <- c(10, 9, 8)
heights <- c(11, 9, 7)
file <- "foo.pdf"
lapply(1:3, function(i) {
    qo <- gsub(".pdf", paste0(i, ".pdf"), file, fixed = TRUE)
    pdf(file=qo, width = widths[i], height = heights[i])
    # Reads string interactively
    input <- scan("", what = "character", nmax=1, quiet=TRUE)
    # Executes `input` as a command (possibly, needs extra check)
    eval(parse(text=input))
    dev.off()
})

这会产生三个文件:foo1.pdffoo2.pdf使用foo3.pdf您以交互方式键入的命令生成的图。

于 2013-01-16T23:06:30.420 回答