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()| a | b | c |
|---|---|---|
| 7 | 9 | NA |
| 2 | NA | 5 |
| NA | NA | 4 |
| 4 | 4 | 5 |
| 5 | 5 | 8 |
NA がそのまま出力されます。
そこで NA を 「-」 に置換します。
そのために options(knitr.kable.NA = ‘-’) と指定します。
options(knitr.kable.NA = '-')
dframe %>% kable()| a | b | c |
|---|---|---|
| 7 | 9 | - |
| 2 | - | 5 |
| - | - | 4 |
| 4 | 4 | 5 |
| 5 | 5 | 8 |
Font Awesome も利用できます。
library(fontawesome)
options(knitr.kable.NA = fa(name = "face-smile"))
dframe %>% kable()| a | b | c |
|---|---|---|
| 7 | 9 | |
| 2 | 5 | |
| 4 | ||
| 4 | 4 | 5 |
| 5 | 5 | 8 |
絵文字も利用できます。
library(emoji)
options(knitr.kable.NA = emoji("smile"))
dframe %>% kable()| a | b | c |
|---|---|---|
| 7 | 9 | 😄 |
| 2 | 😄 | 5 |
| 😄 | 😄 | 4 |
| 4 | 4 | 5 |
| 5 | 5 | 8 |
以上です。

