在参数化 rmarkdown 报告中渲染图像会导致 pdflatex 失败
rendering images in parameterized rmarkdown reports causes pdflatex to fail
我按照指南 here and here 为不同的数据子集生成相同的报告。我已经得到它来生成打印不同输入参数的简单 PDF,但是当我尝试使用 ggplot 生成 pdf 时,出现错误。有谁知道它为什么抱怨?
错误(文件路径被修剪):
output file: AllDepartmentsReport.knit.md
"C:/Program Files/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS AllDepartmentsReport.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output pandoc13b0103e5bc9.tex --template "C:..\R\win-library.5\rmarkdown\rmd\latex\default-1.17.0.2.tex" --highlight-style tango --latex-engine pdflatex --variable graphics=yes --variable "geometry:margin=1in" --variable "compact-title:yes"
! Package pdftex.def Error: File `/autoReports/MATH_Report_files/figure-lat
ex/unnamed-chunk-3-1.pdf' not found: using draft setting.
Error: Failed to compile /autoReports/MATH_Report.tex. See MATH_Report.log for more info.
用于提供参数的 Rscript generateReports.r
:
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)
}
带有报告信息的 Rmd AllDepartmentsReport
:
---
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 的脚本它就可以工作。我还应该注意,它说找不到的文件实际上在那里。我也在使用 Windows 10、64 位。
我试过的一些文章:
编辑:
我尝试使用渲染中的选项,如 intermediates_dir = 和 knit_root_dir,但似乎无法获得有效的组合。只能在同一个文件夹下编译。
通过将路径指定为 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"
)
我按照指南 here and here 为不同的数据子集生成相同的报告。我已经得到它来生成打印不同输入参数的简单 PDF,但是当我尝试使用 ggplot 生成 pdf 时,出现错误。有谁知道它为什么抱怨?
错误(文件路径被修剪):
output file: AllDepartmentsReport.knit.md
"C:/Program Files/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS AllDepartmentsReport.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output pandoc13b0103e5bc9.tex --template "C:..\R\win-library.5\rmarkdown\rmd\latex\default-1.17.0.2.tex" --highlight-style tango --latex-engine pdflatex --variable graphics=yes --variable "geometry:margin=1in" --variable "compact-title:yes" ! Package pdftex.def Error: File `/autoReports/MATH_Report_files/figure-lat ex/unnamed-chunk-3-1.pdf' not found: using draft setting.
Error: Failed to compile /autoReports/MATH_Report.tex. See MATH_Report.log for more info.
用于提供参数的 Rscript generateReports.r
:
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)
}
带有报告信息的 Rmd AllDepartmentsReport
:
---
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 的脚本它就可以工作。我还应该注意,它说找不到的文件实际上在那里。我也在使用 Windows 10、64 位。
我试过的一些文章:
编辑:
我尝试使用渲染中的选项,如 intermediates_dir = 和 knit_root_dir,但似乎无法获得有效的组合。只能在同一个文件夹下编译。
通过将路径指定为 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"
)