Pau*_*aul 7 hook r knitr r-markdown
我正在尝试设置一个在我的HTML报告中knitr::knit_hooks()自动格式化R-markdown块的数据框输出kableExtra.
我想不要在每个表格数据块的末尾重复添加以下行(或任何行):
head(iris) %>%
kable("html") %>%
kable_styling("hover", full_width = FALSE)
Run Code Online (Sandbox Code Playgroud)
我想出了一个基于这个答案的解决方案,它通过评估块源来实现(请参阅下面的答案,其中包括我对此方法的一些问题); 我希望使用块输出可能有更好的解决方案.
这是一个示例.Rmd,概述了我想要实现的目标.
---
title: "Untitled"
author: "Paul"
date: "25 September 2018"
output: html_document
---
```{r setup, include = F}
library(dplyr)
library(kableExtra)
library(knitr)
data(iris)
default_source_hook <- knit_hooks$get('source')
knit_hooks$set(
output = function(x, options) {
x %>%
kable("html") %>%
kable_styling("hover", full_width = FALSE)
},
source = function(x, options) {
if(is.null(options$table))
default_source_hook(x, options)
else {
eval(parse(text = x)) %>%
kable("html") %>%
kable_styling("hover", full_width = F)
}}
)
```
Desired chunk input:
```{r test, echo = F}
head(iris)
```
Desired output will look like:
```{r output, echo = F}
head(iris) %>%
kable("html") %>%
kable_styling("hover", full_width = FALSE)
```
Solution using the source chunk output:
```{r table_format, results = "hide", table = T, eval = F}
head(iris)
```
Run Code Online (Sandbox Code Playgroud)
谢谢.
如果不需要使用针织钩,以下内容可能会有所帮助。这个想法是定义一个函数,它可以按照您想要的方式打印它得到的任何内容。这并没有消除所有打字,但大大减少了打字。
---
title: "Untitled"
author: "Paul"
date: "25 September 2018"
output: html_document
---
```{r setup, include = F}
library(dplyr)
library(kableExtra)
library(knitr)
tbl_out <- function(data) {
data %>% kable("html") %>% kable_styling("hover", full_width = FALSE)
}
```
Prints as desired:
```{r test, echo = F}
head(iris) %>% tbl_out()
```
Run Code Online (Sandbox Code Playgroud)
输出:
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |