R 具有闪亮DT的持久列过滤器

R 具有闪亮DT的持久列过滤器,r,shiny,dt,R,Shiny,Dt,我试图适应捕获DT的列搜索词响应,并在表由于其反应数据对象的更新而刷新时重新应用它们。我想不出实现这一目标的正确公式。可复制示例: require(shiny) require(dplyr) require(stringr) require(DT) d = tibble(sentence = sentences, chars = nchar(sentence), grp = sample(LETTERS, length(sentences), replace = TRUE)) default_

我试图适应捕获DT的列搜索词响应,并在表由于其反应数据对象的更新而刷新时重新应用它们。我想不出实现这一目标的正确公式。可复制示例:

require(shiny)
require(dplyr)
require(stringr)
require(DT)

d = tibble(sentence = sentences, chars = nchar(sentence), grp = sample(LETTERS, length(sentences), replace = TRUE))
default_search = ''

ui <- fluidPage(
  selectInput("grp", 'group', choices = LETTERS, selected = NULL),
  DTOutput("data_tbl")
)

server <- function(input, output, session) {
  
  r = reactiveValues(group = NULL, lines = NULL, search_columns = NULL)
  
  proxy <- dataTableProxy('data_tbl')
  
  observeEvent(input$grp, {
    r$data = d %>% filter(grp == input$grp)
  })
  
  output$data_tbl <- renderDT(filter = "top", {
    r$data %>% select(-grp)
  }, options = list(stateSave = TRUE))
  
  # catch column search terms
  observeEvent(input$data_tbl_search_columns, {
    if(is.null(input$data_tbl_search_columns)) return()
    if(input$data_tbl_search_columns[1] != '') {
      proxy %>% updateSearch(keywords = list(global = default_search, columns = c('', isolate(input$data_tbl_search_columns))))
    }
  })
  
}

shinyApp(ui, server)
require(闪亮)
需要(dplyr)
要求(stringr)
需要(DT)
d=TIBLE(句子=句子,字符=nchar(句子),grp=样本(字母,长度(句子),替换=真))
默认搜索=“”

ui诀窍在于,您的
observeEvent
取决于不断变化的数据,而不是列搜索词。我还添加了存储全局搜索词的功能

require(shiny)
require(dplyr)
require(stringr)
require(DT)

d = tibble(sentence = sentences, chars = nchar(sentence), grp = sample(LETTERS, length(sentences), replace = TRUE))
default_search = ''

ui <- fluidPage(
  selectInput("grp", 'group', choices = LETTERS, selected = NULL),
  DTOutput("data_tbl")
)

server <- function(input, output, session) {
  
  r = reactiveValues(group = NULL, lines = NULL, search_columns = NULL)
  
  proxy <- dataTableProxy('data_tbl')
  
  observeEvent(input$grp, {
    r$data = d %>% filter(grp == input$grp)
  })
  
  output$data_tbl <- renderDT(filter = "top", {
    r$data %>% select(-grp)
  })
  
  # catch column search terms
  observeEvent(r$data, {

    if(is.null(input$data_tbl_search_columns)) return()
    if(input$data_tbl_search_columns[1] != '') {
      proxy %>% updateSearch(keywords = list(global = isolate(input$data_tbl_search),
                                             columns = c("", isolate(input$data_tbl_search_columns))))
    }
  })
  
}

shinyApp(ui, server)
require(闪亮)
需要(dplyr)
要求(stringr)
需要(DT)
d=TIBLE(句子=句子,字符=nchar(句子),grp=样本(字母,长度(句子),替换=真))
默认搜索=“”

updateSearch中的ui错误:找不到对象“default\u search”。抱歉@HubertL缺少一行。现在的工作已经完成了。所以我的回答是错误的:/谢谢@starja:)