在参数化的rmarkdown报告中渲染图像会导致pdflatex失败

时间:2018-10-09 21:05:42

标签: r r-markdown knitr pdflatex

我遵循指南herehere来针对不同的数据子集生成相同的报告。我已经得到它来生成打印不同输入参数的简单PDF,但是当我尝试使用ggplot生成pdf时,出现错误。有人知道为什么会抱怨吗?

错误(修剪了文件路径):

  

输出文件:AllDepartmentsReport.knit.md

     

“ C:/ Program Files / RStudio / bin / pandoc / pandoc” + RTS -K512m -RTS AllDepartmentsReport.utf8.md-至乳胶-来自markdown + autolink_bare_uris + ascii_identifiers + tex_math_single_backslash-输出pandoc13b0103e5bc9.tex- -template“ C:.. \ R \ win-library \ 3.5 \ rmarkdown \ rmd \ latex \ default-1.17.0.2.tex” --highlight-style探戈--latex-engine pdflatex --variable graphics = yes-变量“ geometry:margin = 1in”-变量“ compact-title:yes”       !软件包pdftex.def错误:File`/ autoReports / MATH_Report_files / figure-lat       找不到ex / unname-chunk-3-1.pdf:使用草稿设置。

     

错误:无法编译/autoReports/MATH_Report.tex。有关更多信息,请参见MATH_Report.log。

用于提供参数generateReports.r的Rscript:

library(knitr)
library(markdown)
library(rmarkdown)
library(tinytex)

departments <- c("MATH", "BIOL")


ReportGenerator <- function(department) {

  rmarkdown::render("./AllDepartmentsReport.Rmd",
                    params = list(department = dpt),
                    output_file = paste0(dpt,"_Report",".pdf"),
                    output_dir = "../autoReports",
                    clean = FALSE
                     )
}

# lapply(departments, ReportGenerator)

for (dpt in unique(departments) ){
  ReportGenerator(dpt)
}

带有报告信息AllDepartmentsReport的Rmd:

---
output: pdf_document
params: 
  department: "MATH"
---

```{r, include = FALSE}
library(knitr)
library(tidyverse)
library(viridis)
library(purrr)
library(scales)
library(stringr)
library(lubridate)
library(markdown)
library(rmarkdown)
```

This is my report about 

```{r}
print(params$department)
paste(params$department)
print("hi")

ggplot(mtcars) + 
  geom_point(aes(x=mpg, y=hp))

```

我下载并使用了miktex。如果我使用RMD编织,它将正确生成。如果我在没有ggplot的情况下运行脚本,则该脚本可以工作。我还应该指出,它说找不到的文件实际上已经存在。我还在使用64位Windows 10。

我尝试过的一些文章:

编辑:

我尝试使用renders中的选项,例如middles_dir =和knit_root_dir,但似乎无法获得有效的组合。仅能在同一文件夹中编译。

1 个答案:

答案 0 :(得分:0)

通过将路径指定为output_file名称的一部分,而不是使用output_dir,我可以成功地将创建的pdf保存到其他文件夹。如下所示:

  rmarkdown::render(input = "reportMaker.Rmd",
                    params = list(department = dpt),
                    output_file = paste0("../autoReports/",dpt,"_Report",".pdf"), 
                    output_format = "pdf_document"

                     )