knitr:块的延迟执行
我有一个Rmd文件,其中有一些函数及其说明,还有一些函数的示例。knitr:块的延迟执行,r,knitr,R,Knitr,我有一个Rmd文件,其中有一些函数及其说明,还有一些函数的示例。 由于示例在逻辑上必须遵循它们相关的函数,因此它们的执行应该相对于它们的函数源延迟 test.Rmd文件可以绘制如下: Function f ---------- The function f blah .... ```{r f.code, eval=!delay} f=function() g() # depends on g ``` f example --------- Use f as follows: `
由于示例在逻辑上必须遵循它们相关的函数,因此它们的执行应该相对于它们的函数源延迟
test.Rmd
文件可以绘制如下:
Function f
----------
The function f blah ....
```{r f.code, eval=!delay}
f=function() g() # depends on g
```
f example
---------
Use f as follows:
```{r f.demo, eval=delay}
f()
```
Function g
----------
The function g blah ....
```{r g.code, eval=!delay}
g=function() return(1)
```
其中,delay
标签(用于函数示例)表示块应在函数之后执行
我将此功能用于编织:
knit2=function(file){
require(knitr); require(rmarkdown)
delay=FALSE
knit(file)
delay=TRUE
knit(file)
render(file, "html_document")
}
```
knit2('test.Rmd')
既然我不是knitr专家,我想知道这是否是正确的方法。为什么不在开头用
echo=F
在一个块中定义g
?然后,您可以随意使用g
,当您想要显示定义时,只需将相同的代码放在一个块中,使用echo=T
和eval=F
@Gregor:2个函数,这是有意义的。22或222跟踪依赖项是不可行的。此外,如您所见,代码遵循文档,文档顺序倾向于按字母顺序或文档部分。