手动使用R Knit/Markdown为HTML生成图表

3
我正在使用knit()markdownToHTML()自动生成报告。
问题在于,当我使用这些命令时,无法输出图形。但是,当我使用RStudio的Knit HTML按钮时,图形会被生成。然后,当我使用自己的knit/markdown函数时,它突然输出了图形。当我切换到另一个文档并编织它时,旧的图形出现了。
例如:
```{r figA, result='asis', echo=TRUE, dpi=300, out.width="600px", 
              fig=TRUE, fig.align='center', fig.path="figure/"}
plot(1:10)
```

使用命令:

 knit(rmd, md, quiet=TRUE)
 markdownToHTML(md, html, stylesheet=style)

所以我想有两个问题,取决于你想如何处理它:

  • RStudio的Knit HTML中发生了什么神奇的事情?
  • 如何在不依赖RStudio的Knit HTML按钮的情况下生成/包含?

1
我发现RStudio将它们输出到一个文件夹中,而knitting不会将图形放在这个文件夹中。 - PascalVKooten
你的意思是RStudio将图形输出到_.md_文件所在的同一目录,而knit()则将它们输出到_figure/_文件夹中吗?如果是这样,你知道如何将RStudio的输出图形设置为_figure/文件夹,而不必在.Rmd_文件中显式指定opts_chunk$set(fig.path = "figure/")吗? - Cryptor
2个回答

1
我唯一看到的问题是,当你在代码块选项{...}跨越两行时,它就不能正常工作。如果所有内容都在一行上,那么它可以正常工作。我有什么遗漏吗?
请参考文档,在knitr中不允许出现以下情况:
  1. 代码块选项必须写在同一行;代码块选项内不允许换行;
RStudio必须以非标准方式处理换行符。

我之前并不知道,但是无论如何已经以那种格式呈现了(这里的换行只是为了更好的显示)。对此我感到抱歉。 - PascalVKooten

0

这真的很尴尬,我真的以为我仔细阅读了文档:

include: (TRUE; logical) 是否将块输出包含在最终输出文档中;如果 include=FALSE,则不会写入任何内容到输出文档中,但代码仍然会被评估,并且如果块中有任何图形,则会生成图形文件,因此您可以手动插入图形;请注意,这是唯一一个不被缓存的块选项,即更改它不会使缓存无效

只需添加 {..., include=TRUE} 就解决了问题。我认为这将是一个相当明智的默认设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接