gpt4 book ai didi

r - 将自定义函数传递给 RMarkdown YAML df_print 以在编织 HTML 输出时打印数据帧

转载 作者:行者123 更新时间:2023-12-02 19:10:52 30 4
gpt4 key购买 nike

这是我在 Stack Overflow 上的第一篇文章,所以如果这是一个格式不正确或不可重现的问题,请原谅我。我尝试将以下自定义数据表打印函数('print.me')传递到 RMarkdown 中的 YAML header ,以将 df_print 编织为 HTML:

print.me <- function(x) {
x <- x %>% kbl(digits=2, align= 'l', booktabs=T) %>%
kable_styling(fixed_thead = T, position ="float_right") %>%
kable_paper("striped", full_width = T, fixed_thead = T,
html_font = "Helvetica", font_size = 11) %>%
row_spec(0, color = "yellow", background = "#5b705f", font_size = 12) %>%
scroll_box(width = "700px", height = "300px")
return(x)
}

此函数成功呈现了我在从 RMarkdown 打印 mtcar 时所希望的数据帧格式:

enter image description here

问题是我无法找到一种方法来成功地将“print.me”传递到 YAML header ,以便“print.me”成为编织到 HTML 时渲染数据帧的默认方法。我在 YAML header 中的代码如下所示:

df_print: !expr 'print.me'

但是,我收到以下错误消息:

Error: object 'print.me' not foundError in yaml::yaml.load(..., eval.expr = TRUE) :Could not evaluate expression: print.meCalls: ... parse_yaml_front_matter -> yaml_load -> Execution halted

df_print 文档声称可以将任意函数传递给 df_print,并且我发现过去的一篇文章似乎已经达到了解决方法,但我我一生都无法弄清楚如何从 header 调用此函数。谢谢你的帮助! 〜杰米

最佳答案

我在rmarkdown documentation中找不到这个但我认为不建议将像您这样的复杂函数传递给 YAML header 中的 df_print 参数。然而,根据this GitHub 上关于 print.me()(简化版本)的问题如下:

---
title: "testprint"
output:
html_document:
df_print: !expr print.me <- function(x, ...) { knitr::asis_output(kableExtra::kbl(x, digits=2, align= 'l'))}
---

相反,您可以注册自己的方法来在代码块中打印数据帧(最好是在 YAML header 之后),如下所示:

```{r setup, include=FALSE}
library(kableExtra)
library(knitr)

print.me <- function(x, ...) {
x %>%
kbl(digits=2, align= 'l', booktabs=T) %>%
kable_styling(fixed_thead = T, position ="float_right") %>%
kable_paper("striped", full_width = T, fixed_thead = T,
html_font = "Helvetica", font_size = 11) %>%
row_spec(0, color = "yellow", background = "#5b705f", font_size = 12) %>%
scroll_box(width = "700px", height = "300px") %>%
asis_output()
}

registerS3method("knit_print", "data.frame", print.me)
```

技术细节有点复杂。简而言之,我们用自定义函数覆盖在检查要打印的对象的类时调用的默认函数(极客称此过程方法调度),并将该方法注册到knitr。

关于r - 将自定义函数传递给 RMarkdown YAML df_print 以在编织 HTML 输出时打印数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64296437/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com