【问题标题】:Working on separate bookchapters with R Markdown使用 R Markdown 编写单独的书章
【发布时间】:2016-10-20 06:52:01
【问题描述】:

假设我正在编写具有以下布局的文档:

Ch1
  Ch1.1
Ch2
...

其中Ch 代表文档中的某个章节。

每个Ch 都是一个单独的文件,例如Ch1.1.rmd。有一个文件main.rmd,其结构如下:

```{r child='Ch1.rmd'}
```
```{r child='Ch1.1.rmd'}
```
```{r child='Ch2.rmd'}
```
...

如果我编译main.rmd,我会得到整个文档,效果很好。

但我一次处理不同的章节,不想每次都编译整个文档来查看结果。问题是存在依赖关系。 Ch1.1.rmd 使用Ch1.rmd 中定义的函数,因此它不会自行编译。

有哪些有效的方法可以在_独立_章节与其他章节的依赖关系上工作,同时将文档(可能还有依赖关系)结构保持在一个位置_?

注意:将函数放在单独的文件中,并在编译每章之前加载它不是一种选择,因为所有函数/变量都与文本内联。

【问题讨论】:

  • 几天前我遇到了一个用于写书的 R 包。 bookdown.org/yihui/bookdown我并没有真正密切关注它,因为现在我没有那么多用处,但它似乎确实提供了你想要的东西——bookdown.org/yihui/bookdown/new-session.html
  • @R.S.谢谢。这似乎是一种可能的答案,因此,如果您愿意,可以将其转换为一种。你肯定会得到一票:)
  • 好吧,我猜这个太简单了。我几乎无法提供有关包裹的任何信息。所以我可以用你上面给出的 +1 快乐地生活 :-) 谢谢你的提议。
  • 把你的函数放在一个包里,这个包在编织时会被加载。
  • @drmariod,函数在每一章的文本中定义。

标签: r rstudio knitr r-markdown


【解决方案1】:

您可以使用knitrdependson 参数中的缓存选项。

你的例子是:

{r Ch1, child='Ch1.rmd', cache=TRUE} {r child='Ch1.1.rmd', dependson='Ch1'} {r child='Ch2.rmd'}

【讨论】:

  • 你将如何只编译Ch1.1
  • 哎呀,我想我误解了你的问题:我以为你不想重新编译 Ch1 块。显然,我的回答是无效的。在您的情况下,我会将所有函数放在单独的 R 脚本或包中,并在每个 rmd 文件的开头加载它...
  • 没问题。答案确实提供了一种省略重新编译 R 代码的好方法。仍然重新编译整个 tex 代码。请注意,也可以使用cache=TRUE, autodep=TRUE
猜你喜欢
  • 2021-09-29
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
相关资源
最近更新 更多