2

我希望使用pkgdown生成分析网站,并希望在多个站点文章中使用大对象,而无需重新计算或保存.Rda文件以包含在包构建中(即data/x.Rda.

默认情况下,pkgdown::build_site()忽略vignettes带有前下划线的子目录中的文件。我当前的方法使用文件vignettes/articles.Rmd来执行一些生成大对象的计算,然后.html通过调用rmarkdown::render(). 看起来的内容是.Rmd这样的:


---
title: "Render Articles"
---

Would like to be able to share `x` with reports and maintain pkgdown html.

```{r}
x <- runif(n = 10000000) # Some calculations that generate a large object
```

Global object `x` is available from `_QC1.Rmd`

```{r}
# Code chunk to generate report (repeated for multiple _*.Rmd files)
rmarkdown::render(
  input = "_QC1.Rmd",  # pkgdown::build_site() ignores files with preceding underscore
  output_file = "QC1.html"  # renders HTML file output without "_"; copied to docs/articles/
)
```

_pkgdown.yml可以修改以获取从 Rmarkdown 报告呈现的 html 文件,但它们会丢失.Rmdpkgdown::build_site().

如果可能,我想在这些 Rmarkdown 报告中包含 pkgdown 站点 html 格式(即标题和站点导航栏)。

_pkgdown.yml内容:

navbar:
  title: ~
  left:
    - text: QC
      menu:
        - text: QC1
          href: articles/QC1.html
        - text: QC2
          href: articles/QC2.html

我不确定是否有更好的方法来跨文章共享对象(尽管我知道这些通常是独立的)。这种方法有效,但是为 Rmarkdown 报告呈现的 html 页面会丢失 pkgdown 格式,从而导致站点导航栏丢失。

# Example of package vignettes subdirectory contents
1 vignettes
2  ¦--_QC1.Rmd  # ignored by pkgdown::build_site()
3  ¦--_QC2.Rmd
4  ¦--articles.html 
5  ¦--articles.Rmd  # contains R chunks for rendering Rmarkdown reports
6  ¦--QC1.html  # picked up in _pkgdown.yml from `docs/articles/`
7  °--QC2.html

编辑:将在此处查看源代码:

https://github.com/r-lib/pkgdown/blob/master/R/build-articles.R

4

0 回答 0