【问题标题】:kableExtra: Dynamic add_header_above labelingkableExtra:动态 add_header_above 标签
【发布时间】:2017-12-25 16:33:59
【问题描述】:

我想用 rmarkdown 创建一个 pdf。 PDF 应包含一个表格。表格应该有一个动态的列标签。

标签头应显示日历周。

但是,不显示日历周(例如,KW29),而是显示变量名称“kw0”。

我的错误是什么?

library(knitr)
library(kableExtra)
library(lubridate)
options(knitr.table.format = "latex")
loadData <- function() {# load some data}

myData<- loadData ()

kw0 <- paste("KW", week(Sys.Date()) - 1, sep = "")
kw1 <- paste("KW", week(Sys.Date()), sep = "")
kw2 <- paste("KW", week(Sys.Date()) + 1, sep = "")
kw3 <- paste("KW", week(Sys.Date()) + 2, sep = "")


kable(myData, row.names = FALSE, booktabs = T) %>%
  kable_styling(
  full_width = TRUE,
  font_size = 14 
  )  %>% add_header_above(header = c(" " = 1, kw0 = 2, kw1 = 2, kw2 = 2, kw3 = 2))

我很高兴收到您的建议。

【问题讨论】:

    标签: r knitr r-markdown pandoc kableextra


    【解决方案1】:

    标头是一个命名字符向量,其值为 colspan。

    您必须使用函数names() 指定向量的名称。

    library(knitr)
    library(kableExtra)
    library(lubridate)
    options(knitr.table.format = "latex")
    loadData <- function() {# load some data}
    
    myData<- loadData ()
    
    kw0 <- paste("KW", week(Sys.Date()) - 1, sep = "")
    kw1 <- paste("KW", week(Sys.Date()), sep = "")
    kw2 <- paste("KW", week(Sys.Date()) + 1, sep = "")
    kw3 <- paste("KW", week(Sys.Date()) + 2, sep = "")
    
    # Set a named vector for dynamic header
    
    # create vector with colspan
    myHeader <- c(" " = 2, kw0 = 2, kw1 = 2, kw2 = 2, kw3 = 2)
    
    # set vector names 
    names(myHeader) <- c(" ", kw0, kw1, kw2, kw3)
    
    kable(myData, row.names = FALSE, booktabs = T) %>%
      kable_styling(
      full_width = TRUE,
      font_size = 14 
      )  %>% add_header_above(header = myHeader)
    

    【讨论】:

    • myHeader
    【解决方案2】:

    kableExtra 开发者的 github 页面上描述了一种简单快捷的方法:https://github.com/haozhu233/kableExtra/issues/415

    library(knitr)
    library(kableExtra)
    library(lubridate)
    options(knitr.table.format = "latex")
    loadData <- function() {# load some data}
    
    myData<- loadData ()
    
    kw0 <- paste("KW", week(Sys.Date()) - 1, sep = "")
    kw1 <- paste("KW", week(Sys.Date()), sep = "")
    kw2 <- paste("KW", week(Sys.Date()) + 1, sep = "")
    kw3 <- paste("KW", week(Sys.Date()) + 2, sep = "")
    
    
    kable(myData, row.names = FALSE, booktabs = T) %>%
      kable_styling(
      full_width = TRUE,
      font_size = 14 
      )  %>% add_header_above(header = c(" " = 1, setNames(2,kw0), setNames(2,kw1), setNames(2,kw2), setNames(2,kw3))
    

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 1970-01-01
      • 2019-07-19
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      相关资源
      最近更新 更多