0

複数のpdfをプロットし、それらを読み取り、結果(異なるサイズのpdf)を結合し、結合したファイルを保存し、初期ファイルを削除する関数を構築する必要があります。複数のプロットを外部PDFにインタラクティブにプロットする最初の部分に夢中になっています。問題は、ループで一時停止しfor、プロットを待ってから、プロットを受け取った後に移動する方法が必要なことです。私はそれが進むべき道だと思っreadLinesていました (そしてそうかもしれません) が、これはうまくいきませんでした (つまり、プロットは作成されませんでした)。

pdfプロットを取り、次にdev.off進み、プロセスを繰り返す間にRを一時停止するにはどうすればよいですか? file1.pdf望ましい結果は、file2.pdfとという名前の wd に 3 つのファイルを持つことですfile3.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)  

EDIT 1 関連する質問: Ghostscript のバージョンを確認する

EDIT 2これは、この情報を使用して作成したパッケージへのリンクです-ここをクリック-

4

2 に答える 2

2

これと同じくらい簡単ですか?

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

stdinこれにより、コンソールからの1行の読み取りが停止します。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()
})

これにより、次の 3 つのファイルが作成されます。とfoo1.pdf、対話的に入力したコマンドを使用して作成されたプロット。foo2.pdffoo3.pdf

于 2013-01-16T23:06:30.420 に答える