purl () innerhalb von knit () duplicate label error
Ich stricke eine .RMD-Datei und möchte bei jedem Ausführen von stricken zwei Ausgaben haben: den HTML-Code und ein R-Skript. Dies kann mit der folgenden Rmd-Datei erfolgen:
---
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
```
Wenn Sie den Block nicht benennen, funktioniert er einwandfrei und Sie erhalten jedes Mal, wenn Sie stricken () ausführen (oder in RStudio auf stricken klicken), eine HTML- und eine R-Ausgabe.
Wenn Sie jedoch den Block benennen, schlägt dies fehl. Beispielsweise
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
```
Es schlägt fehl mit:
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
Wenn Sie das @ auskommentierpurl()
call, es wird mit dem genannten Chunk funktionieren. Da ist also etwas dran, wie daspurl()
call benennt auch Chunks, die @ verursacheknit()
um zu denken, dass es doppelte Chunk-Namen gibt, auch wenn es keine Duplikate gibt.
Gibt es eine Möglichkeit, ein @ einzufügepurl()
Befehl in einer .RMD-Datei, damit beide Ausgaben (HTML und R) erzeugt werden? Oder gibt es einen besseren Weg, dies zu tun? Mein oberstes Ziel ist die Verwendung des neuenrmarkdown::render_site()
, um eine Website zu erstellen, die die HTML- und R-Ausgabe jedes Mal aktualisiert, wenn die Site kompiliert wird.