有什么方法可以将 rmarkdown::paged_table() 设置为打印 table 的默认方式?
Any way to set rmarkdown::paged_table() as the deafult way to printing table?
我看到了 tutorial 可以将表格打印为 knitr::kable() 格式的方法。是否可以对 rmarkdown::paged_table() 格式执行相同的操作,以便默认情况下所有表格都将以 paged_table()
格式打印,就像 R 中的 {rmarkdown}
包一样?
将其放入 yaml 中。
output:
html_document:
df_print: paged
在 Rmarkdown 的情况下,@VishalKatti 提供的答案是恕我直言。对于 Quarto(或 RMarkdown),调整 R Markdown Cookbook 中的示例一个选项以获得您想要的结果可能如下所示:
---
title: Use a custom `knit_print` method to print data frames
format: html
---
First, we define a `knit_print` method, and register it:
```{r}
knit_print.data.frame = function(x, ...) {
res = rmarkdown::paged_table(x)
rmarkdown:::knit_print.data.frame(res)
}
registerS3method(
"knit_print", "data.frame", knit_print.data.frame,
envir = asNamespace("knitr")
)
```
Now we can test this custom printing method on data frames.
Note that you no longer need to call `rmarkdown::paged_table()`
explicitly.
```{r}
head(iris)
```
```{r}
head(mtcars)
```
要完成上面分享的答案,这里有几种实现方法
使用 knitr
的打印功能
对于分页 table 这将是这个函数:(由 rmarkdown 在内部用于 df_print
功能)
paged_print <- function(x, options) {
knitr::asis_output(
rmarkdown:::paged_table_html(x, options = attr(
x,
"options"
)),
meta = list(dependencies = rmarkdown::html_dependency_pagedtable())
)
}
这与其他答案中的功能类似,只是 rmarkdown:::knit_print.data.frame
比 juts 处理分页 table 做得更多。
然后您可以在文档中注册它,以便它默认应用于任何 data.frame 打印。
registerS3method(
"knit_print", "data.frame", paged_print,
envir = asNamespace("knitr")
)
或者在需要在单个值块中打印 data.frame 的块的基础上使用它。 (
```{r, render = paged_print}
iris
```
更多关于 knitr 的自定义打印方法 its vignette
为 knitr 使用选项挂钩
df_print 块选项也可以使用 option hook
以这种方式模拟
knitr::opts_hooks$set(df_print = function(options) {
if (options$df_print == "paged") {
options$render = paged_print
}
options
})
这将允许类似
```{r, df_print = "paged"}
iris
```
```{r}
iris
```
- 第一个 table 将显示为分页 table
- 第二个table将照常显示data.frame
我看到了 tutorial 可以将表格打印为 knitr::kable() 格式的方法。是否可以对 rmarkdown::paged_table() 格式执行相同的操作,以便默认情况下所有表格都将以 paged_table()
格式打印,就像 R 中的 {rmarkdown}
包一样?
将其放入 yaml 中。
output:
html_document:
df_print: paged
在 Rmarkdown 的情况下,@VishalKatti 提供的答案是恕我直言。对于 Quarto(或 RMarkdown),调整 R Markdown Cookbook 中的示例一个选项以获得您想要的结果可能如下所示:
---
title: Use a custom `knit_print` method to print data frames
format: html
---
First, we define a `knit_print` method, and register it:
```{r}
knit_print.data.frame = function(x, ...) {
res = rmarkdown::paged_table(x)
rmarkdown:::knit_print.data.frame(res)
}
registerS3method(
"knit_print", "data.frame", knit_print.data.frame,
envir = asNamespace("knitr")
)
```
Now we can test this custom printing method on data frames.
Note that you no longer need to call `rmarkdown::paged_table()`
explicitly.
```{r}
head(iris)
```
```{r}
head(mtcars)
```
要完成上面分享的答案,这里有几种实现方法
使用 knitr
的打印功能对于分页 table 这将是这个函数:(由 rmarkdown 在内部用于 df_print
功能)
paged_print <- function(x, options) {
knitr::asis_output(
rmarkdown:::paged_table_html(x, options = attr(
x,
"options"
)),
meta = list(dependencies = rmarkdown::html_dependency_pagedtable())
)
}
这与其他答案中的功能类似,只是 rmarkdown:::knit_print.data.frame
比 juts 处理分页 table 做得更多。
然后您可以在文档中注册它,以便它默认应用于任何 data.frame 打印。
registerS3method(
"knit_print", "data.frame", paged_print,
envir = asNamespace("knitr")
)
或者在需要在单个值块中打印 data.frame 的块的基础上使用它。 (
```{r, render = paged_print}
iris
```
更多关于 knitr 的自定义打印方法 its vignette
为 knitr 使用选项挂钩
df_print 块选项也可以使用 option hook
以这种方式模拟knitr::opts_hooks$set(df_print = function(options) {
if (options$df_print == "paged") {
options$render = paged_print
}
options
})
这将允许类似
```{r, df_print = "paged"}
iris
```
```{r}
iris
```
- 第一个 table 将显示为分页 table
- 第二个table将照常显示data.frame