使用过滤器选项从数据表中选择行:RShiny

时间:2017-11-08 07:59:28

标签: shiny

我有一个启用了过滤器的数据表,我想从这个数据表中读取选定的行。

输入$ table_rows_selected如果未应用过滤器,则工作正常但是一旦我对数据应用过滤器,则不会返回正确的rowindex。

RichTextBox

1 个答案:

答案 0 :(得分:1)

要返回先前选择的行索引,您可以添加一些reactiveValues来跟踪索引,请注意索引受数据约束,因此如果选择index = 4并切换数据,则索引= 4将应用于新数据:

library(shiny)
library(DT)
ui <- function(id) {
  fluidPage(
    title = "Job Tracker",

    fluidRow(
      column(width=6,
             selectInput("pickvalue", label = "Pick a Value", choices = unique(iris$Species))
      )
    ),

    br(),
    fluidRow(
      column(12,
             DT::dataTableOutput("job_data")

      )

    ),
    br(),
    fluidRow(
      column(12,DT::dataTableOutput("x4"))
    )
  )

}

server <- function(input, output, session){
  v <- reactiveValues()
  v$s <- NULL

  data <- reactive({
    iris[iris$Species==input$pickvalue,]
  })

  output$job_data  <- DT::renderDataTable({
    datatable(data(),selection = "single")
  })

  observe({
    if(!is.null(input$job_data_rows_selected)){
      v$s <- input$job_data_rows_selected
    }
  })

  output$x4 <- DT::renderDataTable({
    datatable(data()[v$s,])
  })
}
shinyApp(ui, server)

enter image description here

如果要正确保留索引,请删除rownames:

 data <- reactive({
    data <- (iris[iris$Species==input$pickvalue,])
    rownames(data) <- NULL
    data
  })