为 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 中未显示的日期,但它仍然解决了我最初问题的大部分方法。