京橋のバイオインフォマティシャンの日常

南国のビーチパラソルの下で、Rプログラムを打ってる日常を求めて、、Daily Life of Bioinformatician in Kyobashi of Osaka

R言語におけるデータのテーブル表示: knitr & mmtable2とかの紹介

はじめに

knitrパッケージは、R言語による動的レポート生成のための汎用パッケージであって、Literate Programmingの手法を用いたRでの動的なレポート生成のための汎用ツールを提供しています。 また、mmtable2パッケージでは、ggplot2/patchwork 構文でテーブルを作成・結合することができます。 また、getting started vignetteで、簡単な紹介を参照してください。

Rでの気の利いたテーブル表示について、knitr & mmtable2の実行例をまとめてみた。

パッケージのインストール

#パッケージのインストール
install.packages("devtools")
devtools::install_github("ianmoran11/mmtable2")
install.packages("knitr")
install.packages("magrittr")
install.packages("tidyverse")

library(tidyverse)
library(mmtable2)
library(knitr)
library(magrittr)
library(gt)

knitr::kableを用いた実行例

#データのインポート
data(iris)

#headでの通常出力
head(iris)
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4         0.2  setosa
#2          4.9         3.0          1.4         0.2  setosa
#3          4.7         3.2          1.3         0.2  setosa
#4          4.6         3.1          1.5         0.2  setosa
#5          5.0         3.6          1.4         0.2  setosa
#6          5.4         3.9          1.7         0.4  setosa

#pipeでの出力
iris %>%
  head() %>%
  knitr::kable(format = "pipe", booktabs = T)
#| Sepal.Length| Sepal.Width| Petal.Length| Petal.Width|Species |
#|------------:|-----------:|------------:|-----------:|:-------|
#|          5.1|         3.5|          1.4|         0.2|setosa  |
#|          4.9|         3.0|          1.4|         0.2|setosa  |
#|          4.7|         3.2|          1.3|         0.2|setosa  |
#|          4.6|         3.1|          1.5|         0.2|setosa  |
#|          5.0|         3.6|          1.4|         0.2|setosa  |
#|          5.4|         3.9|          1.7|         0.4|setosa  |

#rstでの出力
iris %>%
  head() %>%
  knitr::kable(format = "rst", booktabs = T)
#============  ===========  ============  ===========  =======
#Sepal.Length  Sepal.Width  Petal.Length  Petal.Width  Species
#============  ===========  ============  ===========  =======
#         5.1          3.5           1.4          0.2  setosa 
#         4.9          3.0           1.4          0.2  setosa 
#         4.7          3.2           1.3          0.2  setosa 
#         4.6          3.1           1.5          0.2  setosa 
#         5.0          3.6           1.4          0.2  setosa 
#         5.4          3.9           1.7          0.4  setosa 
#============  ===========  ============  ===========  =======

#simpleでの出力
iris %>%
  head() %>%
  knitr::kable(format = "simple")
# Sepal.Length   Sepal.Width   Petal.Length   Petal.Width  Species 
#-------------  ------------  -------------  ------------  --------
#          5.1           3.5            1.4           0.2  setosa  
#          4.9           3.0            1.4           0.2  setosa  
#          4.7           3.2            1.3           0.2  setosa  
#          4.6           3.1            1.5           0.2  setosa  
#          5.0           3.6            1.4           0.2  setosa  
#          5.4           3.9            1.7           0.4  setosa  

#simple出力でオプション設定01
iris %>%
  head() %>%
  knitr::kable(format = "simple", booktabs = F, align = "c")
# Sepal.Length    Sepal.Width    Petal.Length    Petal.Width    Species 
#--------------  -------------  --------------  -------------  ---------
#     5.1             3.5            1.4             0.2        setosa  
#     4.9             3.0            1.4             0.2        setosa  
#     4.7             3.2            1.3             0.2        setosa  
#     4.6             3.1            1.5             0.2        setosa  
#     5.0             3.6            1.4             0.2        setosa  
#     5.4             3.9            1.7             0.4        setosa  
     
#simple出力でオプション設定02
iris %>%
  head() %>%
  knitr::kable(format = "simple", booktabs = F, align = "r", padding = 2, caption = "iris")
#Table: iris
#  Sepal.Length    Sepal.Width    Petal.Length    Petal.Width    Species
#--------------  -------------  --------------  -------------  ---------
#           5.1            3.5             1.4            0.2     setosa
#           4.9            3.0             1.4            0.2     setosa
#           4.7            3.2             1.3            0.2     setosa
#           4.6            3.1             1.5            0.2     setosa
#           5.0            3.6             1.4            0.2     setosa
#           5.4            3.9             1.7            0.4     setosa

#latexでの出力
iris %>%
  head() %>%
  knitr::kable(format = "latex", booktabs = T)
#\begin{tabular}{rrrrl}
#\toprule
#Sepal.Length & Sepal.Width & Petal.Length & Petal.Width & Species\\
#\midrule
#5.1 & 3.5 & 1.4 & 0.2 & setosa\\
#4.9 & 3.0 & 1.4 & 0.2 & setosa\\
#4.7 & 3.2 & 1.3 & 0.2 & setosa\\
#4.6 & 3.1 & 1.5 & 0.2 & setosa\\
#5.0 & 3.6 & 1.4 & 0.2 & setosa\\
#\addlinespace
#5.4 & 3.9 & 1.7 & 0.4 & setosa\\
#\bottomrule
#\end{tabular}

mmtable2を用いた実行例

head(iris)
iris %>% 
  mmtable(table_data = Sepal.Length) +
  header_top(Species)

#データ準備
gm_df <- gapminder_mm %>% filter(var != "Life expectancy")

head(gm_df)
# A tibble: 6 x 5
#  country   continent  year var        value
#  <chr>     <fct>     <int> <chr>      <chr>
#1 Australia Oceania    1992 Population 17.5 
#2 Australia Oceania    1997 Population 18.6 
#3 Australia Oceania    2002 Population 19.5 
#4 Australia Oceania    2007 Population 20.4 
#5 Botswana  Africa     1992 Population 1.3  
#6 Botswana  Africa     1997 Population 1.5  

table_gm <- gm_df %>% mmtable(table_data = value) +
  header_top(year) +
  header_top_left(var) +
  header_left(country) +
  header_left_top(continent)

table_gm

#Lineの設定
row_list <- cells_body(rows = c(1,3,5,7,9,11))
style_list <- list(cell_borders(sides = "top", color = "grey"))
table_gm + table_format( locations = row_list, style = style_list)

参考資料

haozhu233.github.io

bookdown.org

https://githubmemory.com/repo/ianmoran11/mmtable2githubmemory.com

github.com