r-knitr::knitt不在列表上迭代,在第一个chunk处失败



希望有人能帮助我。在工作中,我有一个RMarkdown文档,它是一个空白模板。在第二个R脚本中,我有一堆代码,它们获取一些数据,进行一些处理,然后为每个组填充标记文档,保存pdf,然后为下一组重复。当我两年前第一次写它的时候,它运行得很好,但现在它在第一个R块的第一次迭代中失败了,并抛出了一个"意外的输入错误"。无论R块是什么,它都会在第一个块出错。当我打开Markdown文档并手动替换所有内容并单击"编织"时,它运行良好。

我想我已经把它归结为可复制性最低的例子了。在一个项目中,我有一个名为"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))

您可以重新排列R块,第一个R块总是会出现"意外输入"错误。我已经更新了R,更新了RStudio,更新了我所有的软件包。我写错了什么?

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

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))

最新更新