如何嵌套编织调用来修复重复的块标签错误?

时间:2013-07-08 20:16:18

标签: r knitr

当我在knit调用中调用使用knit的函数时,我遇到了重复的标签错误。如果我标记块,问题就会消失。有没有办法以不与父some_function电话发生冲突的方式来呼叫knit

library(knitr)
some_function <- function(){
    knit(text ="
    ```{r }
        1
    ```
    ")
}
cat(knit(text ="
```{r }
    some_function()   
```
```{r }
    some_function()   
```
"))

输出:

```r
some_function()
```

```
## Error: duplicate label 'unnamed-chunk-1'
```

2 个答案:

答案 0 :(得分:3)

您可以在knit_child()中使用knit()代替some_function()

library(knitr)
some_function <- function(){
  knit_child(text ="
    ```{r }
        1
    ```
    ")
}
cat(knit(text ="
```{r }
    some_function()   
```
```{r }
    some_function()   
```
"))

答案 1 :(得分:1)

我不完全理解您的代码的上下文使用。为什么不使用简单的knitr子文档功能?

这里有一个解决方法(如果你提供更多的上下文,希望别人能为你提供更好的解决方案)

some_function <- function(chunk.name='chunk1'){
  knit(text =sprintf("
    ```{r %s}
        1
    ```
    ",chunk.name))
}
cat(knit(text ="
```{r }
    some_function('a1')   
```
```{r }
    some_function('a2')   
```
"))