gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 05:13:52 24 4
gpt4 key购买 nike

我正在用

创建一个网站

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com