我需要构建一个函数,它将绘制多个pdf,读入它们,组合结果(不同大小的pdfs),保存组合文件并删除初始文件。我正在挂起交互式绘制多个图到外部pdf的初始部分。问题是我需要一种在for
循环中暂停,等待情节然后在接收情节后继续前进的方法。我认为readLines
是可行的方式(可能是这样),但这不起作用(即没有制作情节)。
如何在pdf
之间进行R暂停,然后转到dev.off
并再次重复该过程?期望的结果是在wd中有三个文件称为file1.pdf
,file2.pdf
和file3.pdf
。再次,在运行循环/ 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 相关问题: Determine ghostscript version
编辑2 以下是我使用此信息创建-click here-
的软件包的链接答案 0 :(得分:2)
这么简单吗?
for(i in 1:3){
cat(i, "\n")
cat("plot now...")
readLines(n=1)
}
停止从stdin
(即控制台)读取一行。按Enter继续。
答案 1 :(得分: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.pdf
,foo2.pdf
和foo3.pdf
,并使用您以交互方式输入的命令生成图表。