R Blogdown:如何隐藏某些特定的代码块?

时间:2019-12-28 13:21:17

标签: r blogdown

我正在使用blogdown创建一个博客,在其中我比较R中的代码和Stata中的代码。我想要:

  • 默认情况下,文章中可见的R代码块
  • 默认情况下,Stata代码块是不可见的,但是如果用户单击按钮,则可见。

This personthis person成功地在Blogdown中折叠了他们的代码块,但显然默认情况下隐藏或显示了每个块。默认情况下,我如何只隐藏一些块?是否有一个选项可以隐藏或显示Blogdown中的代码块(例如选项evalecho ...)?

2 个答案:

答案 0 :(得分:1)

由于我先前的答案有点混乱并且不太详细,因此我做出了一个新的答案,该答案与我想做的事情很好(即可以折叠一些代码块)。

解决方案是使用details指出的Jonathan Sidi的this answer软件包。最初,此软件包的目的是在使用R Markdown(因此也使用R Blogdown)制作的HTML文档中隐藏一些占用大量空间的输出,例如sessionInfo。这是一个示例(取自软件包的网站):

---
title: "Test"
output: html_document
---

```{r}
library(details)

sessioninfo::session_info()%>%
  details::details(summary = 'current session info')
```

但是,我要隐藏的不是某些R代码的输出而是Stata代码(这不是要运行),以便读者可以根据需要将R代码与Stata代码进行比较。因此,我们必须使用一些HTML来做到这一点:

---
title: "Test"
output: html_document
---

## Regression with R and Stata

```{r, eval=FALSE}
lm(mpg ~ drat, data = mtcars)
```

<details>
<summary> Stata </summary>
```stata
regress y x
```
</details>

现在,读者可以看到Stata代码,如果他们愿意的话,那些不想的人也不会被太多的代码块所分散。这也适用于Blogdown文章(因为它只是网站上的某些R Markdown)。

该软件包的网站上详细介绍了更多功能(例如customize the hidden chunks)。

答案 1 :(得分:0)

我发现了另一种替代方案,这似乎是迄今为止最好的替代方案:使用{xaringanExtra}的面板集。

面板集适用于{xaringan}个演示文稿以及R Markdown(因此{blogdown})输出。有关更多选项和详细信息,请参见here。这是一个小演示:

---
title: Title
output:
  blogdown::html_page
---

```{r include = FALSE}
library(xaringanExtra)
# enable panelset
use_panelset()
```

## Title 

Here's a simple way to display several code chunks in a concise way:


::::: {.panelset}

<!-- First panel -->
::: {.panel}
[R code]{.panel-name}

Check the R code below:
```{r echo = TRUE, eval = FALSE}
lm(mpg ~ drat, data = mtcars)
```
:::

<!-- Second panel -->
::: {.panel}
[Stata code]{.panel-name}

```
regress y x

```
:::

<!-- Third panel -->
::: {.panel}
[R output]{.panel-name}
```{r echo = FALSE, eval = TRUE}
lm(mpg ~ drat, data = mtcars)
```
:::

::::

enter image description here