为 knitr 文档设置日期格式
set date format for knitr document
有没有办法设置全局选项(通过 options() 或 knitr::opts_chunk$set() 或其他方式)来设置 knitr/Rmd 文档中的所有日期格式一种特定的风格。因此,不必每次有约会时都写 format(DATE, '%d %m %Y')
,我只需写 DATE
并自动完成格式化?
在 R Markdown Cookbook 之后,您可以通过自定义 knit_print
方法实现您想要的结果。为了增加一些灵活性,您可以将日期格式添加为 YAML header 中的参数,例如允许以不同的日期格式呈现文档。
---
title: Custom knit_print for Dates
output: html_document
params:
date_format: '%d %m %Y'
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r}
knit_print.Date = function(x, ...) {
format(x, params$date_format)
}
registerS3method(
"knit_print", "Date", knit_print.Date,
envir = asNamespace("knitr")
)
```
```{r}
DATE <- as.Date(Sys.Date())
```
`r as.Date(Sys.Date())`
我的问题的部分答案是使用 flextable 作为 table 输出并设置
set_flextable_defaults(
fmt_date = '%d-%m-%Y',
fmt_datetime = '%d-%m-%Y %H:%M:%S')
在设置块中。这显然不适用于 table 中未显示的日期,但它仍然解决了我最初问题的大部分方法。
有没有办法设置全局选项(通过 options() 或 knitr::opts_chunk$set() 或其他方式)来设置 knitr/Rmd 文档中的所有日期格式一种特定的风格。因此,不必每次有约会时都写 format(DATE, '%d %m %Y')
,我只需写 DATE
并自动完成格式化?
在 R Markdown Cookbook 之后,您可以通过自定义 knit_print
方法实现您想要的结果。为了增加一些灵活性,您可以将日期格式添加为 YAML header 中的参数,例如允许以不同的日期格式呈现文档。
---
title: Custom knit_print for Dates
output: html_document
params:
date_format: '%d %m %Y'
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r}
knit_print.Date = function(x, ...) {
format(x, params$date_format)
}
registerS3method(
"knit_print", "Date", knit_print.Date,
envir = asNamespace("knitr")
)
```
```{r}
DATE <- as.Date(Sys.Date())
```
`r as.Date(Sys.Date())`
我的问题的部分答案是使用 flextable 作为 table 输出并设置
set_flextable_defaults(
fmt_date = '%d-%m-%Y',
fmt_datetime = '%d-%m-%Y %H:%M:%S')
在设置块中。这显然不适用于 table 中未显示的日期,但它仍然解决了我最初问题的大部分方法。