rmarkdown / bookdown:动态编辑`metadata $ abstract`?

时间:2018-05-29 07:50:40

标签: r r-markdown bookdown

部分被问及(没有任何接受者)here我已通过评论here与我联系 - 为多管齐下的方法道歉......

在我正在进行的任务中(请参阅here了解示例及其他方面),使用bookdown自动生成报告程序集,我想执行以下操作:

  1. yaml标题中开始一个段落,如下所示:

    ---
    title: "Test Doc"
    author: "Balin"
    date: "May 29, 2018"
    abstract: "Bare bones abstract."
    output: 
      bookdown::pdf_document2:
        toc: no
    ---
    
    This stands in for an extensive report where `code`, its 
    documentation and interpretation of its results are integrated:
    
    1. We load some data:
       ```{r data-loading}
        my_data <- cars
        # PLACEHOLDER (see in text below) #
       ```
    <!-- ... -->
    
  2. 随着处理的进行,我的目标是编辑 yaml - 派生 摘要,累积组装/扩充它。我知道 rmarkdown::metadata$abstract(例如, here),但是 metadata对象似乎是不可变的,无法编辑。

    我本质上想用例子替换示例中的PLACEHOLDER位 类似的东西:

    rmarkdown::metadata$abstract <- paste(
      rmarkdown::metadata$abstract,
      "The analyzed dataset contains",
      nrow(my_data),
      "data points.")
    

    可以实现吗?

1 个答案:

答案 0 :(得分:1)

请记住,YAML不必全部在一个区块中,或者全部在Rmarkdown文档的开头。

在我的Rmarkdown报告中,我将摘要放在单独的YAML块 分析之后。此时,您可以像在其他Rmarkdown中一样将R对象引用为内联表达式。摘要仍将放在输出文档的开头。

```{r last_chunk}
# run R code
````

---
abstract: |
On `r Sys.Date()` we analyzed `r nrow(mydata)` observations and found...
----

唯一的技巧 - 必须---分隔符之前和之后有空行才能识别YAML块。

警告 - 我在Rmarkdown中使用此功能但尚未通过记事本对其进行测试。