【发布时间】:2013-05-08 01:13:27
【问题描述】:
当我 purl/tangle 文档以将 R 块提取到脚本中时,有什么方法可以:
- 排除任意块(按名称说)?
- 如果不是,排除一个块 if
eval=F(或者我可以定义一个块挂钩/选项include=F)?
例如,假设我有以下 Rmd:
```{r setup, echo=F}
library(MASS)
```
First, we perform the setup (assume for some reason I need to evaluate `setup`
silently before I wish to display the chunk to the user, hence the repetition)
```{r setup, eval=F}
```
Here's the function I've been explaining:
```{r function}
plus <- function (a, b) a + b
```
And here's an example of its use:
```{r example}
plus(1, 2)
```
纠结的脚本是这样的:
## @knitr setup, echo=F
library(MASS)
## @knitr setup, eval=F
library(MASS)
## @knitr function
plus <- function (a, b) a + b
## @knitr example
plus(1, 2)
我的想法是,由于我不想要评估特定的块,它们至少不应该出现在输出中(在上面的示例中,第二个 setup 块)。
另外,我最好将一些块相对于纠结的输出标记为“不可见”。我不希望在我的输出脚本中出现 example 块(在 Rmd 中用于文档的目的很好,但我希望能够将 Rmd 和 source('myfile.r') 纠缠在一起,如果我想使用 @987654328 @函数,不用担心执行这些额外的例子。目前我是在rmd中纠结,然后手动从脚本中编辑出我不想要的块,这似乎违反了只写的原则一个 Rmd 无需额外努力即可提供文档和脚本。)
【问题讨论】:
-
注意 - 用
include=F标记一个块将从purl'd 输出中删除,但也从Rmd(在来自github的knitr版本中)是;我的计算机版本 1.2 上似乎不存在该功能),因此这对于我的example块并不理想(我希望它 包含 在 Rmd 中并从 purl 的输出中删除) -
purl()确实有很大的改进空间,使用频率较低,因此开发得不太好 -
有没有办法只从 Rmd 中提取 r 个块?
-
@KLDavenport 将所有 R 块从 Rmd 提取到 R 脚本中,您使用
purl。它提取了所有的块,我有兴趣只提取其中的一些(或者甚至将特定的块提取到特定的输出文件)。 -
我无法简单导出所有块以工作,但我会再次查看文档。可惜你可以为每个块设置配置以在你的情况下导出。