Excelで表を作っていたあの頃のように、Rmarkdownで作った表にも自由に色を塗りたい...。そんな方へkableExtraパッケージのご紹介です。
ちなみに、このパッケージは、基本的にはHTMLやLatex形式での出力向けの関数のようです。Wordにも出力できるようですが、コピー&ペーストで少々めんどくさそう。ですので、今回はHTML形式で出力する場合やRでiosスライドを作成する場合を想定しています。
パッケージのインストール
- 以下のコードでインストールした場合、R MarkdownをKnitする際にErrorが出る場合があります。その際は、こちらのコード
devtools::install_github("kupietz/kableExtra")
で再度インストールしてください(2023/11/13追記)。参考記事:Error when loading kableExtra in markdown file after updating to R 4.3.0 もしくは Errors in Bookdown after updating R 4.3.0 #750
install.packages("kableExtra")
表の作成
Rのirisのデータを使って作成します。
library(kableExtra)
table.1 <- iris
kableExtra::kbl(table.1)
これだけだとシンプルすぎて見づらいので、テーマの設定をします。様々なテーマがありますが、個人的にお勧めなテーマを今回は設定します。パイプ(%>%)を使って、設定を追加していきます。
table.1 %>%
kableExtra::kbl() %>%
kable_styling(
bootstrap_options = c("striped"),
full_width = T)
行に色を塗る
row_spec関数を使用します。row_spec(塗りたい行, color = "文字の色",bold = TRUE/FALSE ,background = "塗りつぶす色")のように指定します。
table.1 %>%
kableExtra::kbl() %>%
kable_styling(
bootstrap_options = c("striped"),
full_width = T)%>%
row_spec(
1, #塗りたい行
color = "black", #文字の色
bold = TRUE , #文字の太字
background = "lightblue") #塗りつぶす色
一行目が黒い文字の太字で、青色の背景で塗られていますね。
列に色を塗る
列の場合は、column_spec関数です。引数の指定もrow_spec関数とほとんど一緒です。しかし、画像をセルに挿入するimageなどの面白い引数がありますので、詳しくはhelp関数で見てみてください。
table.1 %>%
kableExtra::kbl() %>%
kable_styling(
bootstrap_options = c("striped"),
full_width = T)%>%
column_spec(
2,
color = "black",
bold = TRUE ,
background = "lightblue")
条件を指定して色を塗る
条件に応じてセルの色を塗り分けたい場合があると思います。条件の指定は様々だと思いますが、今回はこちらの記事を参考に指定しました。
table.1 %>%
kableExtra::kbl() %>%
kable_styling(
bootstrap_options = c("striped"),
full_width = T) %>%
column_spec(2, #色を塗る列を指定
background = ifelse(table.1$Sepal.Width > 3,
"lightblue", "lightgreen"))
機能がかなり多いので今回はごく一部の機能の紹介です。ぜひこのパッケージの作成者のページ(参考資料)をご覧ください。沢山の機能が丁寧に説明されています(英語です)。
参考資料: