rdt

Collapse DT table columns by default


As per below the documentation (https://rstudio.github.io/DT/extensions.html), the below code should collapse first and second columns by default(0,1), but when tried it is displaying all columns by default.

Can we have only 2 columns displayed by default?

DT::datatable(
  iris,
  rownames = FALSE,
  extensions = 'Buttons',
  options = list(
    dom = 'Bfrtip',
    buttons = list(list(extend = 'colvis',
                        columns = c(2, 3, 4)))
  )
)

Solution

  • You have to hide the columns with columnDefs:

    DT::datatable(
      iris,
      rownames = FALSE,
      extensions = 'Buttons',
      options = list(
        dom = 'Bfrtip',
        buttons = list(list(extend = 'colvis',
                            columns = c(2, 3, 4))),
        columnDefs = list(
          list(targets = c(2, 3, 4),
               visible = FALSE)
        )
      )
    )
    

    EDIT

    In your comments, you ask for a "Show all" feature (you should have opened a new question, but well). Here is the way I found:

    DT::datatable(
      iris,
      rownames = FALSE,
      extensions = 'Buttons',
      options = list(
        dom = 'Bfrtip',
        buttons = list(
          list(
            extend = 'colvis', 
            columns = c(2, 3, 4)
          ),
          list(
            extend = 'colvisGroup', 
            text = "Show all",
            show = ":hidden"
          ),
          list(
            extend = 'colvisGroup', 
            text = "Show none",
            hide = ":visible"
          )
        ),
        columnDefs = list(
          list(targets = c(2, 3, 4),
               visible = FALSE)
        )
      )
    )