【问题标题】:Display both code and image with R Markdown HTML when making PDF from within the code从代码中制作 PDF 时,使用 R Markdown HTML 同时显示代码和图像
【发布时间】:2015-10-04 11:42:31
【问题描述】:

我正在创建一个R Markdown HTML 文档,我想在其中显示以下代码以及生成的绘图图像:

pdf("plot.pdf", width=6, height=4) 
plot(cars) 
dev.off()

问题在于pdf()dev.off() 函数。当我用echo=F 运行上面的代码时,它会抑制所有代码的显示,只在外部生成PDF而不显示任何图像。

```{r, echo=F}
pdf("plot.pdf", width=6, height=4)
plot(cars)
dev.off()
```   

当我使用eval=F 运行此代码时,它会显示代码,但显然不会生成图像。

```{r, eval=F}
pdf("plot.pdf", width=6, height=4)
plot(cars)
dev.off()
```

到目前为止,我发现的唯一解决方案是拥有两个单独的代码块 - 一个用于使用 eval=F 显示代码,另一个用于显示图像,其中我使用 echo=F 压制代码并仅使用代码进行绘图图片,PDF制作:

```{r, eval=F}
pdf("plot.pdf", width=6, height=4)
plot(cars)
dev.off()
```

```{r, echo=F}
plot(cars)
```

它不是很可持续的方法,所以我宁愿只用一个代码块来做。我尝试了谢一辉的各种ways for chunks output control,但没有任何成功。

【问题讨论】:

    标签: r pdf markdown knitr


    【解决方案1】:

    如果您在 rmarkdown 中反复使用 pdfdev.off 但又不想执行它们,一种解决方案是重新定义它们以不执行任何操作。

    ```{r,echo=FALSE}
    pdf <- function(...) Sys.sleep(.1)
    dev.off <- function(...) Sys.sleep(.1)
    
    ```
    
    ```{r fig.show="hold"}
    pdf("plot.pdf", width=6, height=4)
    plot(cars)
    dev.off()
    ```
    

    当然,这应该小心使用,因为它可能会弄乱文档中的其他代码。您仍然可以使用grDevices::pdf()grDevices::dev.off() 访问正常功能

    【讨论】:

    • 它给了我以下错误:Error in dev.off(dv) : unused argument (dv) Calls: &lt;Anonymous&gt; ... process_group.block -&gt; call_block -&gt; block_exec -&gt; dev.off Execution halted
    • @GeekOnAcid :将... 添加到函数定义中应该可以解决这个问题。查看我的更新答案
    • 差不多了,但代码块在 HTML 文档中显示时会被破坏,dev.off() 在情节图之后移动 - 知道如何防止这种情况发生吗?
    • @GeekOnAcid 添加块选项fig.show="hold"。见yihui.name/knitr/options
    【解决方案2】:

    这不够优雅,但您可以在块中添加第二个plot(cars) 并使用echo=-4 抑制其输出。

    ```{r, echo=-4, results="hide"}
    pdf("plot.pdf", width=6, height=4)
    plot(cars)
    dev.off()
    plot(cars)
    ```   
    

    【讨论】:

    • 谢谢,有趣的方法。但是,如果我有很多情节选项要包括(如文本、各种调整等),它仍然存在问题。所以我试图找到一个避免重复图像代码的解决方案。
    猜你喜欢
    • 2018-03-06
    • 1970-01-01
    • 2018-05-21
    • 2019-06-11
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2019-10-22
    相关资源
    最近更新 更多