希望有人可以帮助我。在工作中,我有一个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,并更新了所有软件包。我写错了什么?
答案 0 :(得分:1)
将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))