为什么kable在rmarkdown中的函数中使用时不能打印

pav*_*pav 7 r knitr r-markdown

我必须在许多rmarkdown报告中重复某些输出,并希望编写一个用于此目的的函数.

当我编织rmd文件而不是kable数据帧时,调用函数输出正确.

例如

---
title: "Markdown example"
output: html_document
---

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

# Markdown example
```{r mtcars}
make_outputs <- function(){
  knitr::kable(head(mtcars))
  plot(mtcars$mpg, mtcars$cyl)
  hist(mtcars$cyl)
}

make_outputs()

```
Run Code Online (Sandbox Code Playgroud)

显示图表但不显示kable表格.

Geo*_*vva 5

您可以通过使用print来打印 kable 输出,设置results="asis"代码块的 ,然后使用kable_stylingfrom package来做到这一点kableExtra

这对我有用:

```{r mtcars, results='asis'}

library(kableExtra)
library(knitr)

make_outputs <- function(){
  print(kable_styling(kable(head(mtcars))))
  plot(mtcars$mpg, mtcars$cyl)
  hist(mtcars$cyl)
}

make_outputs()
```
Run Code Online (Sandbox Code Playgroud)


小智 0

我得到了类似的工作

  • 将 knitr::kable(head(mtcars)) 移动到函数末尾的 return() 内。
  • 包括结果='asis'

例如

---
title: "Markdown example"
output: html_document
---

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

# Markdown example
```{r  results = 'asis'}
make_outputs <- function(){

print(plot(mtcars$mpg, mtcars$cyl))
print(hist(mtcars$cyl))

return(knitr::kable(head(mtcars)))
}

make_outputs()

```
Run Code Online (Sandbox Code Playgroud)

如果您使用 ggplot 绘图,则需要将绘图包装在 print() 内