从服务器端调用到数据表的DT上应用客户端过滤器

时间:2019-04-23 13:15:05

标签: r shiny dt

我想使用预设的过滤器呈现数据表,以便用户可以更改过滤器。而且我想避免使用额外的UI,例如selectInput等。

最低工作示例: 在以下示例中,我希望在“种类”列上设置一个预设过滤器,例如“ virginica”。

library(shiny)
library(DT)

ui <- fluidPage(
    titlePanel("Edgar Anderson's Iris Data"),
    DT::dataTableOutput('dt')
)

# Define server logic required to draw a histogram
server <- function(input, output) {
    output$dt <- renderDataTable({
        datatable(
            iris,
            filter='top',
            options=list(dom='lritp')
        )
    })
}

shinyApp(ui = ui, server = server)

我本以为使用columnDefs是可能的,但是a,我无法确定应该怎样做。

2 个答案:

答案 0 :(得分:1)

以下内容将帮助您入门:

library(shiny)
library(DT)

ui <- fluidPage(
  titlePanel("Edgar Anderson's Iris Data"),
  DT::dataTableOutput('dt')
)

# Define server logic required to draw a histogram
server <- function(input, output) {
  output$dt <- renderDataTable({
    datatable(
      iris,
      filter='top',
      options=list(dom='lritp',
                   searchCols = list(NULL, NULL, NULL, NULL, NULL, list(search = '["virginica"]')))
    )
  })
}

shinyApp(ui = ui, server = server)

答案 1 :(得分:0)

我发现一个替代解决方案,不是使用@ismirsehregal那样优雅,而是使用代理。这需要为每个表定义一个额外的对象,并将它们添加到反应流或观察者中。

ValidationError: "'2019-04-15T14:38:04.000000Z' is not of type 'object'