quarto rmarkdown 代码块只显示某些行

quarto rmarkdown code block to only display certain lines

我有一个 .qmd / .rmd 文件想要显示代码块的输出。代码块开头有很多行我想隐藏,在下面的示例中我希望输出是代码的第三行 str(month) 并输出 [=12= 的结果].我试图编辑代码块参数,但它给了我一个错误:

---
format:
  html: default
---

```{r}
#| echo: c(3)
month <- "July"

str(month)
```

错误:

7: #| echo: c(3)
            ~~~
8: month <- "July"
x The value c(3) is string.
i The error happened in location echo.

rmarkdown support files 建议这样的事情是可能的

不知道我是否理解正确。但是您可以根据特定块内的行索引选择仅显示您想要的代码。在 c() {r, echo = c()}

中插入要显示的索引行数

您的具体情况

---
format:
  html: default
---

```{r, echo = c(2)}
month <- "July"
str(month) # line 2
```

其他示例:

---
format:
  html: default
---

```{r, echo = c(5,8)}
# Hide
month <- "July"

## Show code and output
str(month) # Line 5

## Show code and output
1+1 # Line 8

## Show just output
2+2

```

这不起作用,因为您按照 Quarto 的建议对块选项使用 YAML 语法,但 #| echo: c(3) 不是有效的 YAML。 #| echo: 3 是。

如有必要,您可以在 YAML 字段中使用 !expr 来解析 R 代码。 #| echo: !expr c(3) 会起作用。在这里解释:https://quarto.org/docs/computations/r.html#chunk-options

但是,要知道 knitr 支持其他方式来指定块选项:

  • 通常header 其中选项需要是有效的 R 代码
```{r, echo = c(3)}
#| echo: c(3)
month <- "July"

str(month)
```
  • 还有它的多行版本,当有像 fig.cap
  • 这样的长选项时很有用
```{r}
#| rmdworkflow,
#| echo = FALSE,
#| fig.cap = "A diagram illustrating how an R Markdown document
#|   is converted to the final output document.",
#| out.width = "100%"

knitr::include_graphics("images/workflow.png", dpi = NA)
```

有关此新语法的更多信息,请参阅博客 post 中的公告:https://yihui.org/en/2022/01/knitr-news/

这个问题也在 Github 中被问到 - 所以那里有更详细的答案:https://github.com/quarto-dev/quarto-cli/issues/863