【发布时间】:2022-01-24 14:03:19
【问题描述】:
有没有办法设置全局选项(通过 options() 或 knitr::opts_chunk$set() 或其他方式)以将 knitr/Rmd 文档中的所有日期设置为特定样式的格式。因此,我不必每次有约会时都写 format(DATE, '%d %m %Y'),而可以写 DATE 并自动完成格式化?
【问题讨论】:
标签: r date format r-markdown knitr
有没有办法设置全局选项(通过 options() 或 knitr::opts_chunk$set() 或其他方式)以将 knitr/Rmd 文档中的所有日期设置为特定样式的格式。因此,我不必每次有约会时都写 format(DATE, '%d %m %Y'),而可以写 DATE 并自动完成格式化?
【问题讨论】:
标签: r date format r-markdown knitr
按照R Markdown Cookbook,您可以通过自定义knit_print 方法实现您想要的结果。为了增加一些灵活性,您可以在 YAML 标头中添加日期格式作为参数,例如允许以不同的日期格式呈现文档。
---
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 进行表格输出和设置
set_flextable_defaults(
fmt_date = '%d-%m-%Y',
fmt_datetime = '%d-%m-%Y %H:%M:%S')
在设置块中。这显然不适用于未显示在表格中的日期,但仍然可以解决我最初的问题。
【讨论】: