kable{knitr}を利用して表を出力する際にNAを置換する方法

kable {knitr} を利用して表を出力する際に NA を置換する方法です。

始めにサンプルとするデータフレームを作成します。

library(dplyr)
a <- c(7,2,NA,4,5)
b <- c(9,NA,NA,4,5)
c <- c(NA,5,4,5,8)
(dframe <- data.frame(a,b,c))
   a  b  c
1  7  9 NA
2  2 NA  5
3 NA NA  4
4  4  4  5
5  5  5  8

続いて kable {knitr} を利用して表を出力します。

なお、Quarto の出力htmlファイルを WordPress に投稿している関係から、テーマの table スタイルを上書きして表の外観を近似させるために以下のスタイルを table に適用させています。

table, table * {
    border:  1 !important;
    background: transparent !important;
    border-right: none !important;
    border-left: none !important;
    line-height: 18px !important;
}
th, th *{
    border-bottom-color: black !important;
    color: black !important;
}
library(knitr)
dframe %>% kable()
abc
79NA
2NA5
NANA4
445
558

NA がそのまま出力されます。

そこで NA を 「-」 に置換します。

そのために options(knitr.kable.NA = ‘-’) と指定します。

options(knitr.kable.NA = '-')
dframe %>% kable()
abc
79-
2-5
--4
445
558

Font Awesome も利用できます。

library(fontawesome)
options(knitr.kable.NA = fa(name = "face-smile"))
dframe %>% kable()
abc
79
25
4
445
558

絵文字も利用できます。

library(emoji)
options(knitr.kable.NA = emoji("smile"))
dframe %>% kable()
abc
79😄
2😄5
😄😄4
445
558

以上です。