2017-04-07 130 views
3

我有R軟件包,它的一個函數 - 生成報告。 在安裝/降價我有一個模板rep.rmd 在包裝功能ProduceReport()我有這樣的代碼:當output_file路徑是絕對路徑時,rmarkdown :: render導致錯誤

render.file <-"rep.Rmd" 
    render.file <- system.file(TEMPLATES.PATH, render.file, package=getPackageName()) 
    render.dir <- dirname(render.file) 
    pdf.file <- "example.pdf" 
    rmarkdown::render(render.file , quiet = FALSE, output_format = "pdf_document", 
       output_file = pdf.file) 

它的工作原理。

但如果我最後一行改爲:

rmarkdown::render(render.file , quiet = FALSE, output_format = "pdf_document", 
        output_file = "d:/help/me/please/example.pdf") 

它不工作(所有路徑都存在)。我有錯誤

"! Undefined control sequence. \[email protected] ->d:\help \me\please\example _files/figure-... l.148 ...example_files/figure-latex/unnamed-chunk-2-1}"

pandoc.exe: Error producing PDF Show Traceback Rerun with Debug Error: pandoc document conversion failed with error 43 "

當我使用這個變體Linux服務器上它也可以

附:我想強調的是,問題可能不在路徑中(我使用標準過程file.path()來避免系統問題,僅在示例中使用示例中的路徑)。

+0

在Windows中,路徑必須以另一種方式寫入,而不是Linux:'D:\ help \ me \ please \ example.pdf'。我認爲這是錯誤。 –

+0

@J_F我不這麼認爲,順便說一句,我使用標準函數file.path()。在我的描述中,我只寫了這個「d:/help/me/please/example.pdf」爲例 – Stanislav

回答

2

也許這不是一個很好的解決辦法,但它適用於WIN

lol <- rmarkdown::render(render.file , quiet = TRUE, 
       output_format = "pdf_document") 
file.rename(lol, pdf.file) 
+1

謝謝,它的工作原理,但我有一些Linux服務器的權限問題,不想移動文件 – Stanislav

1

你可以嘗試使用rmarkdown::render()功能output_dir參數。

+0

不幸的是,它產生同樣的錯誤 – Stanislav