来自变量的Rmarkdown块名称

Nic*_*ton 6 r r-markdown

如何将变量用作块名称?我有一个多次调用的子文档,我需要以一种比我也可以交叉引用它们的方式推进块标签.

像这样的东西:

child.Rmd

```{r }
if(!exists('existing')) existing <- 0
existing = existing + 1
myChunk <- sprintf("myChunk-%s",existing)
```

## Analysis Routine `r existing`

```{r myChunk,echo = FALSE}
#DO SOMETHING, LIKE PLOT
```
Run Code Online (Sandbox Code Playgroud)

master.Rmd

# Analysis Routines

Analysis for this can be seen in figures \ref{myChunk-1}, \ref{myChunk-2} and \ref{myChunk-3}

```{r child = 'child.Rmd'}
```

```{r child = 'child.Rmd'}
```

```{r child = 'child.Rmd'}
```
Run Code Online (Sandbox Code Playgroud)

编辑潜在的解决方案

这是一个潜在的解决方法,受SQL注入所有东西的启发......

child.Rmd

```{r }
if(!exists('existing')) existing <- 0
existing = existing + 1
myChunk <- sprintf("myChunk-%s",existing)
```

## Analysis Routine `r existing`

```{r myChunk,echo = FALSE,fig.cap=sprintf("The Caption}\\label{%s",myChunk)}
#DO SOMETHING, LIKE PLOT
```
Run Code Online (Sandbox Code Playgroud)

chi*_*n12 2

建议在编织和渲染之前将 Rmd 文件预先编织到另一个 Rmd 文件中,如下所示

master.Rmd:

# Analysis Routines

Analysis for this can be seen in figures `r paste(paste0("\\ref{", CHUNK_NAME, 1:NUM_CHUNKS, "}"), collapse=", ")`

@@@
rmdTxt <- unlist(lapply(1:NUM_CHUNKS, function(n) {
    c(paste0("## Analysis Routine ", n),
        paste0("```{r ",CHUNK_NAME, n, ", child = 'child.Rmd'}"),
        "```")
}))
writeLines(rmdTxt)

@@@
Run Code Online (Sandbox Code Playgroud)

孩子.Rmd:

```{r,echo = FALSE}
plot(rnorm(100))
```
Run Code Online (Sandbox Code Playgroud)

编织并渲染 Rmd:

devtools::install_github("chinsoon12/PreKnitPostHTMLRender")
library(PreKnitPostHTMLRender)   #requires version >= 0.1.1

NUM_CHUNKS <- 5
CHUNK_NAME <- "myChunk-"
preknit_knit_render_postrender("master.Rmd", "test__test.html")
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。干杯!