我有一个启用了过滤器的数据表,我想从这个数据表中读取选定的行。
输入$ table_rows_selected如果未应用过滤器,则工作正常但是一旦我对数据应用过滤器,则不会返回正确的rowindex。
RichTextBox
答案 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)
如果要正确保留索引,请删除rownames:
data <- reactive({
data <- (iris[iris$Species==input$pickvalue,])
rownames(data) <- NULL
data
})