I am dabbling with the datatable feature in shiny and I am interested in creating a wellpanel or a sidepanel that lists all the columns of a datatable and allows users to ch
My example uses checkboxGroupInput
to select multiple columns
library(shiny)
vchoices <- 1:ncol(mtcars)
names(vchoices) <- names(mtcars)
runApp(list(
ui = basicPage(
h2('The mtcars data'),
checkboxGroupInput("columns","Select Columns",choices=vchoices,inline = T),
dataTableOutput('mytable')
),
server = function(input, output) {
observeEvent(input$columns,{
cols <- as.numeric(input$columns)
if(length(input$columns) == 1){
df <- data.frame(mtcars[,cols])
names(df) <- names(mtcars)[cols]
output$mytable = renderDataTable(df)
}else{
output$mytable = renderDataTable(mtcars[,cols])
}
})
}
))
Here is an example. It uses selectInput
to select columns, and displays all columns by default until you select one or more specific columns.
library(shiny)
runApp(list(
ui = basicPage(
selectInput("select", "Select columns to display", names(mtcars), multiple = TRUE),
h2('The mtcars data'),
dataTableOutput('mytable')
),
server = function(input, output) {
output$mytable = renderDataTable({
columns = names(mtcars)
if (!is.null(input$select)) {
columns = input$select
}
mtcars[,columns,drop=FALSE]
})
}
))