首页 > 解决方案 > 有没有办法为 Jira 样式表自定义 knitr::kable() 输出?

问题描述

我正在尝试创建与 Jira 表样式匹配的表输出格式。Jira 在输出中使用管道,knitr::kable(format = "pipe")但在列标题方面有所不同。这是我当前使用该knitr包的表格格式的示例:

data("BOD")
BOD %>% tibble::tibble() %>% 
  head(n = 10) %>% 
  knitr::kable(format = "pipe")

> | Time| demand|
  |----:|------:|
  |    1|    8.3|
  |    2|   10.3|
  |    3|   19.0|
  |    4|   16.0|
  |    5|   15.6|
  |    7|   19.8|

Jira 没有使用线将标题与列内容分开,而是使用了稍微不同的语法:

|| Time|| demand||
|     1|     8.3|
|     2|    10.3|
|     3|    19.0|
|     4|    16.0|
|     5|    15.6|
|     7|    19.8|

目前,我正在删除 ›separation row‹ 并修改第一行:

BOD %>% tibble::tibble() %>% 
  head(n = 10) %>% 
  knitr::kable(format = "pipe") -> tmp
tmp <- tmp[-2] 
tmp[1] <- stringr::str_replace_all(tmp[1], pattern = "\\|", replacement = "||")
tmp %>% writeClipboard() # Paste into Jira
# Output:
|| Time|| demand||
|    1|    8.3|
|    2|   10.3|
|    3|   19.0|
|    4|   16.0|
|    5|   15.6|
|    7|   19.8|

有没有办法自定义kable()输出以实现 Jira 兼容性?

标签: rjirakable

解决方案


可能有更好的方法,但现在您可以编写一个函数来返回 Jira 样式的降价表。例如:

library(tidyverse)

jirafy = function(x) {
  x = knitr::kable(x) 
  x = x[-2]
  x[1] = gsub("\\|", "||", x[1])
  
  return(x)
}

data("BOD")
y = BOD %>% 
  tibble() %>% 
  head(n = 10) %>% 
  jirafy

writeClipboard(y)
  || Time|| demand||
  |    1|    8.3|
  |    2|   10.3|
  |    3|   19.0|
  |    4|   16.0|
  |    5|   15.6|
  |    7|   19.8|

我没有使用过 Jira,但是,如果您还没有看到它,该JirAgileR软件包旨在允许您在 R 中使用 Jira。也许JirAgileR可以让您避免复制/粘贴,而是以编程方式执行所有操作。

您还可以向 的维护者提交功能请求JirAgileR,以查看他们是否可以包含直接生成 Jira 样式的降价表的功能。


推荐阅读