17

I would like to be able to get 'slimmer' rows when rendering a DT datatable (ie decrease that height)

options(digits.secs=6)
library(data.table)
d = data.table(x = 1:10,time = as.POSIXct('2015-03-23 12:00:00.123'))
library(DT)
datatable(d)

enter image description here

Jaap
  • 81,064
  • 34
  • 182
  • 193
statquant
  • 13,672
  • 21
  • 91
  • 162

2 Answers2

20

If you add the pageLength= attribute you can set how many rows to show initially. And by adjusting the lengthMenu= c() you can also control the sizes of offered in the drop down, You can also turn search on or off with searching =FALSE

   library(DT)
    datatable(d, options=list(
       pageLength = 3,
       lengthMenu = c(2, 12, 18),
       searching= FALSE))%>%

   formatStyle( 0, target= 'row',color = 'black', backgroundColor = 'yellow', fontWeight ='bold', lineHeight='70%')

And by using the helper functions you can set the style just as you would in traditional CSS on a webpage. Notice the last one, line-height should adjust the row height.

Edited: I moved all the code together for you to see how it works. Sorry I was not clearer up front. The %>%is necessary as is devtools::install_github("rstudio/DT") version of DT.

sconfluentus
  • 4,693
  • 1
  • 21
  • 40
4

I found the above answer didn't work. My simpler solution found via https://rstudio.github.io/DT/010-style.html is to use:

DT::datatable(df) %>%
DT::formatStyle(names(df),lineHeight='80%') 
smartse
  • 1,026
  • 7
  • 12
  • The only difference in your solution is the use of pipes and the calling of `DT` using `:` . The `formatStyle()` is accomplished the same way. With properly called `leaflet` the `::` is not needed, but scoping can be an issue depending on the order in which you call packages from your library. – sconfluentus Aug 22 '21 at 18:19