LoginSignup
1
1

More than 5 years have passed since last update.

RでkableのMarkdown出力をConfluence Wiki記法に変換する

Posted at

はじめに

Rで分析・集計したdata.frameをknitr::kableでmarkdownに出力して、Confluence WikiにがんがんMarkdownテーブル貼りたい!…にもかかわらず、Markdownテーブルはなぜかマークアップ挿入でも出力されないorz

Using markdown tables のAtlassianのコミュニティでも同じ問題は上がっていますが、他のタスクもあって取りかかれていない様子(2019/1/22時点)。また、MySQLでDUMPしたテーブル定義をConfluence Wiki記法やMarkdown記法にするワンライナーでも同様に、sed等で出力結果を整形することを行っています。

今回は、Rではおなじみのknitr::kableを使って、無理やりにでもConfluence Wiki記法の表に変換することを行います

やってみる

準備として、mtcarsのデータを適当に用意する

> dt <- mtcars[1:5, 1:6]
> dt
                   mpg cyl disp  hp drat    wt
Mazda RX4         21.0   6  160 110 3.90 2.620
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875
Datsun 710        22.8   4  108  93 3.85 2.320
Hornet 4 Drive    21.4   6  258 110 3.08 3.215
Hornet Sportabout 18.7   8  360 175 3.15 3.440

これをknitr::kableで出力すると、

> knitr::kable(dt)
|                  |  mpg| cyl| disp|  hp| drat|    wt|
|:-----------------|----:|---:|----:|---:|----:|-----:|
|Mazda RX4         | 21.0|   6|  160| 110| 3.90| 2.620|
|Mazda RX4 Wag     | 21.0|   6|  160| 110| 3.90| 2.875|
|Datsun 710        | 22.8|   4|  108|  93| 3.85| 2.320|
|Hornet 4 Drive    | 21.4|   6|  258| 110| 3.08| 3.215|
|Hornet Sportabout | 18.7|   8|  360| 175| 3.15| 3.440|

knitr::kableの型やattributesをみてみる

> kb <- knitr::kable(dt)
> str(kb)
 'knitr_kable' chr [1:7] "|                  |  mpg| cyl| disp|  hp| drat|    wt|" ...
 - attr(*, "format")= chr "markdown"
> attributes(kb)
$format
[1] "markdown"

$class
[1] "knitr_kable"

これで事前調査は完了。続いて、変換する関数をつくる

tableToConfluence <- function(kb){
  kb[1] <- gsub("\\|","||", kb[1])
  kb <- kb[c(-2)]
  attr(kb, "format") <- "markdown"
  attr(kb, "class") <- "knitr_kable"
  return(kb)
}

この関数をはさむと、シンプルなConfluence Wiki記法に変換されます

> tableToConfluence(knitr::kable(dt))
||                  ||  mpg|| cyl|| disp||  hp|| drat||    wt||
|Mazda RX4         | 21.0|   6|  160| 110| 3.90| 2.620|
|Mazda RX4 Wag     | 21.0|   6|  160| 110| 3.90| 2.875|
|Datsun 710        | 22.8|   4|  108|  93| 3.85| 2.320|
|Hornet 4 Drive    | 21.4|   6|  258| 110| 3.08| 3.215|
|Hornet Sportabout | 18.7|   8|  360| 175| 3.15| 3.440|

何をやってるかというと、gsubで先頭の見出し行を整形、2行目を削除、あとはattrでattribute情報をあとから追加してるだけです。

Confluenceのマークアップ挿入から、ペーストして無事にできました!

image.png

おわりに

Markdown Tableをペーストできる公式機能が待ち遠しいですね

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1