4

当我调用在调用中使用的函数时,我遇到了重复标签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'
```
4

2 回答 2

3

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

library(knitr)
some_function <- function(){
  knit_child(text ="
    ```{r }
        1
    ```
    ")
}
cat(knit(text ="
```{r }
    some_function()   
```
```{r }
    some_function()   
```
"))
于 2013-07-12T07:41:21.663 回答
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')   
```
"))
于 2013-07-08T20:40:11.287 回答