r - block 中生成的图不会出现在 rmarkdown::render_site() 中

标签 r r-markdown

我正在用

创建一个网站

Rscript -e "rmarkdown::render_site()"

我正在生成文档的 html 和 pdf 版本。除非在 html 文档之前生成 pdf 文档,否则不会出现在 block 中生成的图。

文件如下:

index.Rmd

---
title: "My Website"
---

* [Test1 page](test1.html)

* [Test2 page](test2.html)

_site.yml

名称:“我的网站”

test1.Rmd(先生成html)

---
output:
  html_document: default
  pdf_document: default
---

```{r, message=FALSE, echo=FALSE}
library(ggplot2)
ggplot(mtcars, aes(x=mpg, y=disp)) + geom_point()
```

test2.Rmd(先生成pdf)

---
output:
  pdf_document: default
  html_document: default
---

```{r, message=FALSE, echo=FALSE}
library(ggplot2)
ggplot(mtcars, aes(x=mpg, y=disp)) + geom_point()
```

通过Rscript运行render_site()后,test1.html是空白---没有test1_files 子目录。但是,test2.html 显示了这个图(当然 test2_files 存在):

enter image description here

Rmarkdown 1.10 和 1.10.14(截至 10 月 31 日的开发版本)都会发生这种情况。

在一个更复杂的现实生活中的例子中,即使我切换文档顺序也不会出现情节,但我希望这个问题的答案能帮助解决更复杂的问题。

更新:除了@giocomai 的建议之外,解决方法是编译 test1.Rmd 两次:

Rscript -e "rmarkdown::render_site()"
Rscript -e "rmarkdown::render_site('test1.Rmd')"

即使您编译多个单个文件,这似乎也能正常工作。据推测,在单文件情况下,清理工作不那么激进。

最佳答案

我可以复制你的问题,我认为这与 rmarkdown::render() 在创建 pdf 输出后清理文件的事实有关,因为它认为这些文件是无用的,并且 render_site 仅在所有输出类型都已呈现后才将文件复制到 _site 文件夹。

rmarkdown::render() 中有一个设置 clean=FALSE 的选项,但它似乎不适用于 rmarkdown::render_site (),因为参数不会传递给 render

我认为将它作为一个问题提交给 Rmarkdown 是值得的,因为忽略这个论点应该不会太困难。

作为解决方法,您可以在相关 Rmd 文档的 block 中强制 cache = TRUE。因此,例如,您的 test1.Rmd 中的代码块如下所示:

```{r, message=FALSE, echo=FALSE, cache = TRUE}
library(ggplot2)
ggplot(mtcars, aes(x=mpg, y=disp)) + geom_point()
```

注意 block 选项中的 cache = TRUE。启用缓存后,文件夹将被保留并正确复制到 _site 文件夹。

您还可以为所有 block 设置 knitr::opts_chunk$set(cache = TRUE)

这解决了您的问题,但可能应该有更优雅的解决方案。

关于r - block 中生成的图不会出现在 rmarkdown::render_site() 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53093495/

相关文章:

R:如果函数内部不存在变量,则不查找函数外部的变量

r - adjustOHLC - 需要解决方案来循环股票的字符向量

r - 通过 R 中线性回归中预测变量的两种组合

r - 为什么 kableExtra add_footnote() 会导致 book down 编译失败?

r - 如何使用 kbl format = "markdown"指定 kableExtra 选项?

r - 在 R/Rmarkdown 中同步两个传单 map

r - 包含 R 中给定点百分比的椭圆

r - 使用xtable在R markdown文件中打印html表格

带有两个值的单元格的 Rmarkdown 表

r - 四开在 Rstudio 中显示 2 张带有两个重复标签的图片