Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Kable table R: diagonal cells in bold

Let's say I have a data table:

lttrs <- c('a', 'b', 'c')
a <- c(5, 9, 2)
b <- c(3, 3, 8)
c <- c(14, 2, 0)

df <- as.data.table(cbind(lttrs, a, b, c))

view(df)

       lttrs a b  c
1:     a 5 3 14
2:     b 9 3  2
3:     c 2 8  0

Now I would like to make a table with kable like this:

tableDf <- df[]%>%
  select(everything())%>%
  kable("html", escape = F) %>% 
  kable_styling(bootstrap_options = "striped", full_width = F, position = "left")

Giving me the following image enter image description here

I would like the diagonal values to be bold in (5, 3, 0). I guess I have to work with cell_spec and have to make a condition in which df$lttrs == colnames(df), however, I have not managed to fix this. Anyone has a solution to it?

like image 364
BWolk Avatar asked Oct 26 '25 06:10

BWolk


1 Answers

We can use cell_spec from library(kableExtra)

for (i in df[, seq_len(.N)]) {
  df[i, i+1L] <- cell_spec(df[i, i+1L, with=F], "html", bold=T)
}

kable(df, "html", escape = F) %>% 
  kable_styling(bootstrap_options = "striped", full_width = F) 

enter image description here

If you really want things to stand out, you can also change colors and fonts etc. For example,

for (i in df[, seq_len(.N)]) {
  df[i, i+1L] <- cell_spec(df[i, i+1L, with=F], "html", bold=T, background = "red", color = "white")
}

enter image description here

like image 105
dww Avatar answered Oct 28 '25 21:10

dww



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!