【问题标题】:R / Bookdown: specify rmd_files in render_book() functionR / Bookdown:在 render_book() 函数中指定 rmd_files
【发布时间】:2023-03-03 07:39:21
【问题描述】:

在我们的大学里,我们经常使用bookdown 来编写课程材料。我们在“_bookdown.yaml”中使用rmd_files: 来指定要包含在书中的rmd 文件。我们的预订项目往往变得相当冗长和复杂,_bookdown.yaml最终看起来像这样:

rmd_files:
- index.Rmd
- folder1/subfolder1/file1.Rmd
- folder1/subfolder1/file2.Rmd
- folder1/subfolder2/file3.Rmd
- folder2/subfolder3/file4.Rmd
...

使用_bookdown.yaml指定文件有以下限制:

  • 这会导致大量重复(例如,folder1 会为每个子元素重复)
  • 复杂的结构是隐含的和晦涩的
  • 仅选择要渲染的文件子集涉及人工(比如我只想使用文件夹 1 中的所有文件)

所以我们已经转移到在一个单独的 yaml 文件中描述我们的文件结构,并根据我们的需要使用帮助函数来更新 _bookdown.yaml。这种方法看起来有点笨拙,如果我们可以将文件向量传递给render_book(),而不是在_bookdown.yaml 中指定rmd 文件,它会更加优雅。 这可能吗?

注意:使用render_book(..., preview = TRUE) 不是解决方案,我们希望使用一组特定的 rmd 文件重新渲染图书。

【问题讨论】:

  • 你见过RMarkdown Cookbook 格式吗?他们将所有主要章节放在父文件夹中,只有 css/js/images 存储在子文件夹中。这是将您的目录呈现为bookdown_site
  • 是的,许多 bookdown 书籍都遵循这种结构。我们想保留我们的嵌套层次结构。你知道 rmd-files 是否可以显式传递给bookdown::render_book

标签: r r-markdown knitr bookdown


【解决方案1】:

你读过新的Rmarkdown Cookbook

这是本书的剪辑

如果您从子文件夹中提取所有 .RMD,并且与 index.RMD 在同一父目录中,这将匹配您的目录。

如果您相应地命名文件,那么您的图书将以正确的顺序(数字)呈现。如果这样做,您将不必命名 yaml 中的每个 .RMD 文件。你只需要渲染你的index.RMD,它会从你保存的 YAML 中获取指令

【讨论】:

  • 感谢您的回答!但是,我认为我的问题不够清楚:我希望在指定我的 rmd 文件时更加明确,而不是不那么明确。另外,我想保留我们当前的文件结构。
【解决方案2】:

您应该能够在您的_bookdown.yml 中使用这一行来包含来自任何地方的任何文件(注意:括号、逗号和缩进!)

rmd_files: [
  index.Rmd,
  folder1/subfolder1/file1.Rmd,
  folder1/subfolder1/file2.Rmd,
  folder1/subfolder2/file3.Rmd,
  older2/subfolder3/file4.Rmd
]

【讨论】:

    猜你喜欢
    • 2023-02-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 2015-05-29
    • 2021-11-20
    相关资源
    最近更新 更多