[emaillocker]Below are the solutions to these exercises on the DT package.
# load packages library(shiny) library(DT) # Each exercises should result in a Shiny app, # where the changing part is the renderDataTable() function. # To save time, you can use the following template, # and just replace the <renderDataTable> placeholder for each exercise. # ui <- fluidPage( # br(), br(), br(), # fluidRow(column(width = 6, DT::dataTableOutput(outputId = "my_datatable"))) # ) # # server <- function(input, output, session) { # output$my_datatable <- <renderDataTable> # } # # shinyApp(ui = ui, server = server) #################### # # # Exercise 1 # # # #################### DT::renderDataTable( expr = datasets::Orange ) #################### # # # Exercise 2 # # # #################### DT::renderDataTable( expr = datasets::Orange, rownames = F ) #################### # # # Exercise 3 # # # #################### DT::renderDataTable( expr = datasets::Orange, rownames = F, options = list( pageLength = 7, lengthMenu = c(7, 14, 21, 28, 35) ) ) #################### # # # Exercise 4 # # # #################### DT::renderDataTable( expr = datasets::Orange, rownames = F, options = list( pageLength = 7, lengthMenu = c(7, 14, 21, 28, 35), columnDefs = list(list(className = 'dt-center', targets = 0:2)) ) ) #################### # # # Exercise 5 # # # #################### DT::renderDataTable( expr = datasets::Orange, rownames = F, options = list( pageLength = 7, lengthMenu = c(7, 14, 21, 28, 35), columnDefs = list(list(className = 'dt-center', targets = 0:2)), dom = "ltp" ) ) #################### # # # Exercise 6 # # # #################### DT::renderDataTable( expr = datasets::Orange, rownames = F, options = list( pageLength = 7, lengthMenu = c(7, 14, 21, 28, 35), columnDefs = list(list(className = 'dt-center', targets = 0:2)), dom = "ltBp", buttons = list("copy", "csv") ), extensions = c("Buttons") ) #################### # # # Exercise 7 # # # #################### DT::renderDataTable( expr = datasets::Orange, rownames = F, options = list( pageLength = 7, lengthMenu = c(7, 14, 21, 28, 35), columnDefs = list(list(className = 'dt-center', targets = 0:2)), dom = "ltBp", buttons = list("copy", "csv") ), extensions = c("Buttons"), filter = "bottom" ) #################### # # # Exercise 8 # # # #################### DT::renderDataTable( expr = datasets::Orange, rownames = F, options = list( pageLength = 7, lengthMenu = c(7, 14, 21, 28, 35), columnDefs = list(list(className = 'dt-center', targets = 0:2)), dom = "ltBp", buttons = list("copy", "csv") ), extensions = c("Buttons"), filter = "bottom", selection = "single" ) #################### # # # Exercise 9 # # # #################### DT::renderDataTable( expr = datasets::Orange, rownames = F, options = list( pageLength = 7, lengthMenu = c(7, 14, 21, 28, 35), columnDefs = list(list(className = 'dt-center', targets = 0:2)), dom = "ltBp", buttons = list("copy", "csv"), ordering = F ), extensions = c("Buttons"), filter = "bottom", selection = "single" ) #################### # # # Exercise 10 # # # #################### ui <- fluidPage( br(), br(), br(), fluidRow(column(width = 6, DT::dataTableOutput(outputId = "my_datatable"))), fluidRow(column(width = 6, textOutput(outputId = "selection"))) ) server <- function(input, output, session) { output$my_datatable <- DT::renderDataTable( expr = datasets::Orange, rownames = F, options = list( pageLength = 7, lengthMenu = c(7, 14, 21, 28, 35), columnDefs = list(list(className = 'dt-center', targets = 0:2)), dom = "ltBp", buttons = list("copy", "csv"), ordering = F ), extensions = c("Buttons"), filter = "bottom", selection = "single" ) output$selection <- renderText({ req(input$my_datatable_rows_selected) tree <- datasets::Orange[input$orange_trees_table_rows_selected, 1] age <- datasets::Orange[input$orange_trees_table_rows_selected, 2] paste( "You selected tree", datasets::Orange[input$my_datatable_rows_selected, 1], "and age", datasets::Orange[input$my_datatable_rows_selected, 2] ) }) } shinyApp(ui = ui, server = server)
[/emaillocker]
In Exercise #10, how would one modify the render text output as an editable text object adding BOTH read and write to the CSV?