knitr::knit 没有迭代列表,在第一个块失败

knitr::knit not iterating over a list, fails at first chunk

希望有人能帮助我。在工作中,我有一个 RMarkdown 文档,旨在作为要填充的空白模板。在第二个 R 脚本中,我有一堆代码获取一些数据,进行一些处理,然后为每个组填充 markdown 文档,保存 pdf,然后为下一组重复。两年前我第一次写它时 运行 完全没问题,但现在它在第一个 R 块的第一次迭代中失败并抛出 "unexpected input error." 不管 R 块是什么,它都会出错在第一块出来。当我打开 Markdown 文档并手动替换所有内容并单击 'knit' 它运行正常。

我想我已经把它归结为可重现性最低的示例。在一个项目中,我有一个名为 "TestingForm.Rmd" 的降价文件,类似于...

---
title: "Illustrating Problem"
author: "Spudtopia"
date: "3/6/2020"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

This is a test for '&courseTitle'

```{r cars}
print("I'm testing to see if it correctly replaces &courseTitle")
```

## Heading

That's all. That's the test.

然后在 R 脚本中我有类似...

library(tidyverse)
library(knitr)
library(readr)
library(purrr)
library(stringr)

things <- c('Thing One','Thing Two','Thing Three')

output_PDFs <- function(various_files) {

  gned_template <- read_file('TestingForm.Rmd')

  gned_template <- str_replace_all(gned_template, c('&courseTitle' = various_files))

  md_filename <- paste0(various_files, "-Test.pdf")

  knitr::knit(text = gned_template, output = md_filename)

}

map(things, ~output_PDFs(.x))

您可以后运行ge R 块,第一个 R 块总是出错并出现 "unexpected input" 错误。我已经更新了 R,我已经更新了 RStudio,我已经更新了我所有的包。我写错了什么?

knitr::knit替换为rmarkdown::render,一切正常。我在更改代码的地方添加了注释。试试这个:

library(tidyverse)
library(rmarkdown)
library(readr)
library(purrr)
library(stringr)

things <- c('Thing One','Thing Two','Thing Three')

output_PDFs <- function(various_files) {

  gned_template <- read_file('TestingForm.Rmd')

  gned_template <- str_replace_all(gned_template, '&courseTitle', various_files)

  # Temporary file
  write_file(gned_template, 'TestingForm_tmp.Rmd')

  md_filename <- paste0(various_files, "-Test.pdf")
  # Use rmarkdown::render
  rmarkdown::render(input = 'TestingForm_tmp.Rmd', output_file = md_filename)

}

map(things, ~output_PDFs(.x))