在Shiny中使用DT包单击单元格时,如何提取单元格内容和列名?

时间:2018-11-23 14:18:36

标签: shiny dt

早上好,星期五快乐! 我的问题是:

a)使用mtcars提取单元格内容的示例在我的应用程序中不起作用,因为单击单元格时,它会为您提供左侧的值。 b)我无法显示您单击的单元格的列名称。

我将它们渲染到“摘要框”中。请单击列drat的第1行,然后单击列wt的第1行。您会看到我在说什么。

只有一件事:我真正的应用程序就像一个学校时间表,第一列是时间。我不需要提取时间,因为人们会看到时间,但无需单击它。人们将单击名称为M-F的“主题”。这就是为什么我考虑将1添加到input $ ing_table_cells_selected [2]中的原因,因为2是列组件,并且DT从0开始索引。

应用程序位于“英语”标签上。

非常感谢!感谢您提供的任何帮助,因为我已经花了很多时间进行研究,但是效果并不理想。

## libraries 
    library(shinydashboard)
    library(shiny)
    library(data.table)
    library(dplyr)
    library(DT)


ui=dashboardPage(

  dashboardHeader(title = "App"),

  dashboardSidebar(
    sidebarMenu(
      menuItem("Español", tabName = "espanol", icon = icon("laptop")),
      menuItem("English", tabName = "ingles", icon = icon("print"))
    )),


  dashboardBody(
    tabItems(

      tabItem(tabName = "ingles",
              h3("Data", style="color:DodgerBlue;text-align:center;font-family:Palatino Linotype;padding:0px;margin-top:0px;"),

              fluidRow(

                DT::dataTableOutput("ing_table"),
                box(title = "Summary of Activities", status = "primary", solidHeader = TRUE,collapsible = TRUE,
                    DT::dataTableOutput("summary")
                )



              )))))


## SERVER SIDE ##########

server <- function(input, output) {

  ## using mtcars set as a example
  output$ing_table= DT::renderDataTable(mtcars, options = list(searching = FALSE,bInfo=0,scrollX = TRUE, pageLength = 5), rownames=FALSE,selection = list(target = "cell"), server = FALSE)

  # code to extract the cell value and make it reactive to feed output$summary
  # I used "cell[2]" to access the column index and add 1, since in DT column index starts at 0 and I need the values starting col 1, not 0
  reserved_act= reactive({
    cell <- input$ing_table_cells_selected
    data=data.frame(Values=mtcars[cell],Column_Names=colnames(mtcars[cell[2]+1]))
    data
  })

  observeEvent(input$ing_table_cells_selected, {

    output$summary = renderDataTable(reserved_act(), options = list(searching = FALSE,bInfo=0,scrollX = TRUE, paging=FALSE), rownames=FALSE)

  })


}

shinyApp(ui, server)

0 个答案:

没有答案