微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编织/渲染 R Markdown 输出:我可以阻止代码在 PDF 输出中显示但允许在 HTML 输出中折叠代码吗?

如何解决编织/渲染 R Markdown 输出:我可以阻止代码在 PDF 输出中显示但允许在 HTML 输出中折叠代码吗?

以 PDF 格式显示代码可能会很长并且会分散某些读者或客户的注意力,但是如果他们想要复制它或验证我所做的事情,我会将其作为 HTML 版本中的一个选项。根据我的合作对象,我可能会共享一个(或两个),但我想避免每次都更改 Rmd 脚本来生成它们。

因此,我希望能够以某种方式将我的 R Markdown 脚本编织为 HTML 和 PDF,以便 HTML 输出可以显示代码(在 code_folding 选项中使用 output: html_document),但是防止代码出现在我的 PDF 输出中。

有没有办法不用每次都重新编码部分脚本?

以 R Markdown 文本为例:

---
title: "Title"
output: 
  pdf_document:
    df_print: kable
  html_document:
    code_folding: show
    df_print: paged
---

```{r setup,include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## R Markdown

```{r mtcars}
# I want to make this code visible when I knit to HTML,but hidden when I knit to PDF. 
# How do I do that?
mtcars[1:2,1:4]
```

编织时会显示mtcars块。

我可以在设置块中将 knitr::opts_chunk$set(echo = TRUE) 更改为 knitr::opts_chunk$set(echo = FALSE) 以防止代码显示在 PDF 输出中,但代码也会在 HTML 输出中消失。

code_folding: hide 可以隐藏 html_document 输出选项的代码,并允许读者在必要时查看代码。但是,code_folding: hide 不适用于 pdf_document 输出选项。有没有我可以使用的替代方案?

解决方法

也许在 is_html_outputeval 中使用 echo

---
title: "Title"
output: 
 html_document:
   code_folding: show
   df_print: paged
  pdf_document:
    df_print: kable
 ---

```{r setup,include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## R Markdown

```{r mtcars,eval = knitr::is_html_output(),echo = knitr::is_html_output()}
# I want to make this code visible when I knit to HTML,but hidden when    I knit to PDF. 
 # How do I do that?
 mtcars[1:2,1:4]
 ```

-输出html

enter image description here

-输出pdf

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?