在Shiny DT中,如何获取点击单元格旁边的单元格值?

4

我的Shiny应用程序使用DT(也称为DataTables)呈现DT框架。我知道如何通过添加后缀来获取单元格的值:

_cell_clicked

例如:

print(unlist(( input$renderMpaDtOutput_cell_clicked  )))

返回具有名称的列表对象:

row   col value 
  1     9  3929

我想获取单击单元格旁边的单元格值(例如上面坐标的下一个单元格:(row,col) = (1,9))。

有什么想法吗?

1个回答

4
只需将坐标添加到相应的rowcol值中即可。获取用于创建数据表的table,然后获取input$dt_cell_clicked$row$col,并请求table[input$dt_cell_clicked$row + 1, input$dt_cell_clicked$col]或反之亦然。示例应用程序:
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)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接