首页 > 解决方案 > 为什么我不需要 results = "asis" 在 Rmarkdown 中逐字嵌入块输出?

问题描述

我曾经认为results = "asis"需要 chunk 选项来在渲染的 Rmarkdown 文档中逐字包含任何块输出;否则输出将被格式化为控制台输出(例如使用前导##)。

但是,即使没有该选项,几个功能knitr::kable()似乎也可以正常工作,results = "asis"而我手动创建的表在下面的示例中被格式化为控制台输出。

如何knitr知道输出是逐字降价并且应该这样嵌入?

我的例子:

---
title: Title
output: github_document
---

```{r}
# works without results = "asis"
knitr::kable(mtcars)
```

```{r}
# without results = "asis": formatted as console output
table <- "|col1|col2|\n|-|-|\n|a|b|"
writeLines(table)
```

```{r, results='asis'}
# works only with results = "asis"
writeLines(table)
```

标签: rr-markdownknitr

解决方案


results = 'asis'告诉knitr不要代码块输出包装在代码块中。

在您的示例 2 中,输出被格式化为代码块(因为没有results = 'asis'):

## |col1|col2|
## |-|-|
## |a|b|

示例 3 处理输出“原样”,这是格式化表格的有效降价。

在此处输入图像描述

R Markdown Cookbook中给出了一些额外的例子。


推荐阅读