我想使用github_document在Rmd文件中的某些R代码之前和之后指定文本(特别是div标签)。我似乎无法在前后工作。
例如编织以下内容:
---
title: "Untitled"
output: github_document
---
```{r setup, include=FALSE}
library(knitr)
knit_hooks$set(toggle = function(before, options, envir) {
if(options$toggle){
if(before) {
print('<div id="hideMe">')
} else {
print("</div>")
}
}
})
```
## GitHub Documents
```{r pressure, echo=TRUE, toggle=TRUE}
# Here's some
```
产地:
Untitled
================
GitHub Documents
----------------
``` r
# Here's some
```
如果我删除else
部分:
---
title: "Untitled"
output: github_document
---
```{r setup, include=FALSE}
library(knitr)
knit_hooks$set(toggle = function(before, options, envir) {
if(options$toggle){
if(before) {
print('<div id="hideMe">')
}
}
})
```
## GitHub Documents
```{r pressure, echo=TRUE, toggle=TRUE}
# Here's some
```
它按预期工作,我得到before
部分:
Untitled
================
GitHub Documents
----------------
<div id="hideMe">
``` r
# Here's some
```
如果我在if语句中使用!before
,则会显示尾随</div>
。但是我无法同时显示前导和尾随部分。有什么建议可以在文本显示之前和之后 吗?
答案 0 :(得分:1)
不要在块钩子中打印,返回要添加到文档中的文本:
在knitr中,钩子也可用于将文本插入输出。为此,钩子函数必须返回一个字符结果。 [Source]
您观察到的行为最可能的解释是,在R中,“if
会返回已评估的表达式的值”(请参阅?Control
部分“值”)。