在R中合并(绑定)现有pdf文件

在R中合并(绑定)现有pdf文件,r,R,下面的函数由@Tyler Rinker提供,可以找到 我正在努力解决的功能: mergePDF <- function(..., file, gsversion = NULL, in.file = NULL) { if (is.null(in.file)) { in.file <- substitute(...()) }

下面的函数由@Tyler Rinker提供,可以找到

我正在努力解决的功能:

  mergePDF <-  function(..., file, gsversion = NULL, in.file = NULL) {
                        if (is.null(in.file)) {
                        in.file <- substitute(...())
                        } 
                      infiles <- paste(unlist(lapply(file.folder, function(y) as.character(y))), 
                      collapse = " ")
                      if (is.null(gsversion)) {
                      gsversion <- names(which(Sys.which(c("gswin64c")) != paste("C:/Program Files/gs9.15/bin/gswin64c.exe",sep="")))
                          }   
                      pre = " -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="
                     system(paste(paste(gsversion, pre, file, sep = ""), infiles, collapse=""))
                          }

我得到了错误:
有状态127
==>很明显,我不理解.file

中的参数
,下面是如何用一个最小的可复制示例来实现它。我相信你能够把它分开,并找出如何应用到你的PDF。报告包不是必需的,但我喜欢在我的工作流程中使用
文件夹
删除
,因此我在这里使用了它:

library(plotflow)
library(reports)

## make a folder to store the pdfs
folder(deleteMe)

## create a bunch of various sized pdfs
lapply(1:3, function(i) {
    pdf(sprintf("deleteMe/test%s.pdf", i), width=sample(4:7, 1))
    plot(1:10, 1:10, main = sprintf("Title: test%s.pdf", i))
    dev.off()
})

## paste the paths to pdfs together in one string w/ spaces
plotflow:::mergePDF(
    in.file=paste(file.path("deleteMe", dir("deleteMe")), collapse=" "),
    file="merged.pdf"
)

## delete MWE
delete('deleteMe')

这是一个帮助函数,用于在plotflow内帮助R内的工作。如果我已经有PDF,我可能会直接使用gohstscript。

您尝试了什么?默认情况下,.file
中的
是根据
..
中的参数自动构造的,但是您也可以显式地将字符向量传递给.file
中的
参数。我尝试过作为字符向量传递,但仍然得到错误127,我将使用@agstudy对该问题的答案。比构建一个R函数来进行系统调用(到Ghostscript)要容易得多。当然,如果为@Tyler Rinker提供的函数有效,一般来说也应该有效。非常感谢!这是.file
中带有
的缺失部分。
library(plotflow)
library(reports)

## make a folder to store the pdfs
folder(deleteMe)

## create a bunch of various sized pdfs
lapply(1:3, function(i) {
    pdf(sprintf("deleteMe/test%s.pdf", i), width=sample(4:7, 1))
    plot(1:10, 1:10, main = sprintf("Title: test%s.pdf", i))
    dev.off()
})

## paste the paths to pdfs together in one string w/ spaces
plotflow:::mergePDF(
    in.file=paste(file.path("deleteMe", dir("deleteMe")), collapse=" "),
    file="merged.pdf"
)

## delete MWE
delete('deleteMe')