My Shiny App renders DT frame in DT
aka DataTables
. I know how to get value of clicked cell by adding suffix:
_cell_clicked
For example:
print(unlist(( input$renderMpaDtOutput_cell_clicked )))
returns named list object:
row col value
1 9 3929
But I want to get cell value next to clicked cell (for example next to above coordinates: (row,col) = (1,9)
).
Any ideas?
Just by adding coordinates to the row
and col
value, respectively. Take the table
that was used to create the datatable, get input$dt_cell_clicked$row
and $col
and ask for table[input$dt_cell_clicked$row + 1, input$dt_cell_clicked$col]
or vice versa. Example app:
library(shiny)
ui <- fluidPage(
numericInput("x", "how many cells to the left/right?", min=-5, max=5, value=0),
numericInput("y", "how many cells to the top/bottom?", min=-5, max=5, value=0),
DT::dataTableOutput("dt"),
uiOutput("headline"),
verbatimTextOutput("shifted_cell")
)
server <- function(input, output) {
output$headline <- renderUI({
h3(paste0("You clicked value ", input$dt_cell_clicked$value, ". ",
input$x, " cells to the ", ifelse(input$x > 0, "right", "left"), " and ",
input$y, " cells to the ", ifelse(input$y > 0, "bottom", "top"), " is:"))
})
# the value of the shifted cell
output$shifted_cell <- renderPrint({
mtcars[input$dt_cell_clicked$row + input$y, # clicked plus y to the bottom/top
input$dt_cell_clicked$col + input$x] # clicked plus x to the left/right
})
# the datatable
output$dt <- DT::renderDataTable({
DT::datatable(mtcars, select="none")})
}
shinyApp(ui, server)