将图表包装在Rmd文件中的另一个html容器中

Bra*_*sen 6 r knitr

我有一种情况,为了显示目的,我需要将输出的图包装在<div>容器中.

在最基本的层面上,这就是我想做的事情:

```{r fig.width=7, fig.height=6,results='asis',echo=FALSE}
cat('<div>')
plot(cars)
cat('</div>')
```
Run Code Online (Sandbox Code Playgroud)

但是,输出文档如下所示:

![plot of chunk unnamed-chunk-2](figure/unnamed-chunk-2.png)

如果需要"包装"输出,是否有解决方法?

只有在包装绘图时才会出现相同的行为.否则,包括已关闭的标记将按预期工作:

```{r fig.width=7, fig.height=6,results='asis',echo=FALSE}
cat('<div>')
cat('</div>')
plot(cars)
cat('<h1>Hello</h1>')
``` 
Run Code Online (Sandbox Code Playgroud)

然而,包装图像似乎打破了它.我也注意到包含<img>在内<p>是否有可能阻止这种行为?

Ram*_*ath 6

这是一种方法.

  1. 首先,我们创建一个块钩子来包装标签内的块输出.
  2. 我们传递wrap = div作为chunk选项来包装内部div.
  3. 设置out.extra = ""为傻瓜knitr输出html绘图输出.请注意,这仅适用于div标记而不是标记span,因为markdown在spantag.s中进行了解析

DONE!

这里有一个关于Rmd,md和html文件的要点,这里是html预览版

## knitr Chunk Hook to Wrap

```{r setup, echo = F}
knit_hooks$set(wrap = function(before, options, envir){
  if (before){
    paste0('<', options$wrap, '>')
  } else {
    paste0('</', options$wrap, '>')
  }
})
```


```{r comment = NA, echo = F, wrap = 'div', out.extra=""}
plot(mtcars$mpg, mtcars$wt)
```
Run Code Online (Sandbox Code Playgroud)