在本地功能中打印kable无法正常工作

时间:2018-03-30 18:13:59

标签: r r-markdown kable

我正在尝试在Rmarkdown文档中的本地函数kable内“打印”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

也就是说,print_header()中的kable不会打印,但第二个kable会打印。为什么在Rmarkdown doc中的函数内部,kable不能“打印”?

修改

正如一些评论者指出的那样,删除return(0)允许进行kable打印 - 据我所知,这是有效的,因为kable对象被返回到打印它的父环境。因此,正如@RyanMorton所建议的那样,将kable包装为对象并返回它也将起作用。但是我仍然有兴趣知道如何在本地功能环境中强制进行kable打印 - 如果这是不可能的,我想了解原因。

0 个答案:

没有答案