purit()在knit()内重复标签错误

Ada*_*son 10 markdown r rstudio knitr r-markdown

我正在编织一个.Rmd文件,并希望有两个输出:每次运行编织时,html和一个purl'ed R脚本.这可以使用以下Rmd文件完成:

---
title: "Purl MWE"
output: html_document
---

```{r}
## This chunk automatically generates a text .R version of this script when     running within knitr.
input  = knitr::current_input()  # filename of input document
output = paste(tools::file_path_sans_ext(input), 'R', sep = '.')
knitr::purl(input,output,documentation=1,quiet=T)
```

```{r}
x=1
x
```
Run Code Online (Sandbox Code Playgroud)

如果你没有命名块,它工作正常,每次你运行knit()(或点击RStudio中的编织)时你得到html和.R输出.

但是,如果您将块命名为失败.例如:


title: "Purl MWE"
output: html_document
---

```{r}
## This chunk automatically generates a text .R version of this script when     running within knitr.
input  = knitr::current_input()  # filename of input document
output = paste(tools::file_path_sans_ext(input), 'R', sep = '.')
knitr::purl(input,output,documentation=1,quiet=T)
```


```{r test}
x=1
x
```
Run Code Online (Sandbox Code Playgroud)

它失败了:

Quitting from lines 7-14 (Purl.Rmd) 
Error in parse_block(g[-1], g[1], params.src) : duplicate label 'test'
Calls: <Anonymous> ... process_file -> split_file -> lapply -> FUN -> parse_block
Execution halted
Run Code Online (Sandbox Code Playgroud)

如果您注释掉该purl()呼叫,它将与命名的块一起使用.因此,有一些关于purl()调用如何命名块的原因导致knit()认为即使没有重复项也存在重复的块名称.

有没有办法purl()在.Rmd文件中包含一个命令,以便生成两个输出(html和R)?或者有更好的方法吗?我的最终目标是使用new rmarkdown::render_site()构建一个网站,每次编译网站时都会更新HTML和R输出.

Mic*_*per 5

您可以通过options(knitr.duplicate.label = 'allow')在文件中包含以下内容来允许重复标签:

title: "Purl MWE"
output: html_document
---

```{r GlobalOptions}
options(knitr.duplicate.label = 'allow')
```


```{r}
## This chunk automatically generates a text .R version of this script when     running within knitr.
input  = knitr::current_input()  # filename of input document
output = paste(tools::file_path_sans_ext(input), 'R', sep = '.')
knitr::purl(input,output,documentation=1,quiet=T)
```


```{r test}
x=1
x
```
Run Code Online (Sandbox Code Playgroud)

此代码未记录在knitr网站上,但您可以直接从 Github 跟踪最新更改:https : //github.com/yihui/knitr/blob/master/NEWS.md

  • 虽然这是一个很好的解决方法,但这有点冒险。如果在生成图形的块中确实存在重复的标签(除了 purl 问题),您可能会丢失一些在不同位置生成的具有相同名称的图像。小心点。 (2认同)