我正在尝试在 Rmarkdown 文档kable
中的本地函数中“打印”a。print_header
这是一个可重现的示例 - 将以下内容另存为.Rmd
文件并用于rmarkdown::render(...)
呈现.Rmd
文件
---
title: test
---
```{r echo=FALSE, results="asis"}
print_header <- function() {
require(tidyverse)
require(knitr)
require(kableExtra)
mtcars %>%
head(5) %>%
kable("html") %>%
kable_styling()
return(0)
}
print_header()
print("break")
mtcars %>% head(5) %>% kable("html") %>% kable_styling()
```
输出看起来像
test
[1] 0 [1] “break”
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
etc
也就是说,kable inprint_header()
不打印,但第二个打印kable
。为什么在 Rmarkdown 文档中的函数内部时 kable 不“打印”?
编辑
正如一些评论者所指出的,删除return(0)
允许打印 kable - 据我所知,这是有效的,因为 kable 对象被返回到打印它的父环境。因此,正如@RyanMorton 所建议的,将 kable 包装为一个对象并返回它也可以。但我仍然有兴趣知道如何从本地功能环境中强制进行 kable 打印- 如果这不可能,我想了解原因。