RShiny:DT选择行并分配给组

时间:2018-07-17 22:35:06

标签: r datatable shiny dt

我想给用户一个选项,可以将不同的行(主题)分配给组。

理想情况下,可以突出显示行,然后在“分配给组:”字段中输入组名,然后将其保存。然后,他们可以选择一组新的行,并将其添加到另一个组中。依此类推,直到分配了所有所需的行。

这是我到目前为止所拥有的。在选择一组新行之前,我不知道如何保存结果。

library(shiny)
library(DT)


ui <- fluidPage(

  fluidRow(
    column(6, 
           DT::dataTableOutput('x1'),
           textInput("assignGroup","Assign to group: ")),
    column(6, DT::dataTableOutput('x2'))
  )

)

server <- shinyServer(function(input, output, session) {

  output$x1 = DT::renderDataTable(cars, server = FALSE)

  output$x2 = DT::renderDataTable({
    s <- input$x1_rows_selected
    temp <- cars
    temp$Experiment <- as.character("")
    temp[s,"Experiment"] <- input$assignGroup
    temp

  }, server = FALSE)  

})


shinyApp(ui, server)

谢谢,希望这一点很清楚!!!

1 个答案:

答案 0 :(得分:1)

您可以观察“ input $ x1_rows_selected”,然后在事件上编辑表。要显示对该表的实时更改,可以添加一个反应性表。

希望此代码对您有用。

library(shiny)
library(DT)


ui <- fluidPage(

  fluidRow(
    column(6, 
           DT::dataTableOutput('x1'),
           textInput("assignGroup","Assign to group: ")
    ),
    column(6, DT::dataTableOutput('x2'))
  )

)

server <- shinyServer(function(input, output, session) {


  values <- reactiveValues(
    df_data = cars,
    temp = {
      cars[,c("Experiment")]<-NA
      cars
    }
  )

  output$x1 = DT::renderDataTable(values$df_data, server = FALSE)

  observeEvent(input$x1_rows_selected,
               {
                 s<-input$x1_rows_selected
                 values$temp[s,"Experiment"]<-input$assignGroup
               }
  )

  output$x2 = DT::renderDataTable(
    values$temp, server = FALSE)  

})


shinyApp(ui, server)