使用knitr,我试图将输出包装在特定类的div中。例如,这是代码:
```{r}
# Print the pressure data set
head(pressure)
````
我希望输出(但不是代码)包含在div中,例如<div class='myclass'>
,因为该类提供了对输出的特殊控制。 (在我的例子中,它将显示在2列中)
我在StackOverflow上发现了另一个问题,但提供的答案包含了div中的代码和输出,而我只想让输出进入div。
这可以用knitr完成吗?
编辑:
这是当前生成的内容:
<pre class="r"><code>head(pressure)</code></pre>
<pre><code>## temperature pressure
## 1 0 0.0002
## 2 20 0.0012
## 3 40 0.0060
## 4 60 0.0300
## 5 80 0.0900
## 6 100 0.2700</code></pre>
我想要这样的事情:
<pre class="r"><code>head(pressure)</code></pre>
<div class="myclass">
<pre><code>## temperature pressure
## 1 0 0.0002
## 2 20 0.0012
## 3 40 0.0060
## 4 60 0.0300
## 5 80 0.0900
## 6 100 0.2700</code></pre>
</div>
但我希望它可以针对特定的块进行自定义。也就是说,我希望能够设置块选项,以便某些块的输出为myclass
,而其他块的输出为otherclass
。
答案 0 :(得分:3)
这是一个最小的例子:
```{r setup, include=FALSE, cache=FALSE, results='asis'}
knit_hooks$set(
output = function(x, options) {
# any decoration here
paste0("<div class='myout'>", x, "</div><br/>")
}
)
```
<style>
.myout {background:red}
</style>
```{r}
mean(1:3)
sd(1:3)
var(1:3)
```
更新
也许这有帮助。
```{r setup, include=FALSE, cache=FALSE, results='asis'}
ho0 <- knit_hooks$get('output')
knit_hooks$set(
output = function(x, options) {
if (is.null(options$class)) ho0(x)
else
# any decoration here
paste0("<div class='", options$class, "'>", ho0(x), "</div><br/>")
}
)
```
<style>
.myout {background:red}
.myout2 {background:skyblue}
</style>
```{r}
mean(1:3)
```
```{r class="myout"}
sd(1:3)
```
```{r class="myout2"}
var(1:3)
```
请注意,您可以在.Rmd外部定义挂钩。
在knit_hook$set
之前致电knit
。