在Shiny

时间:2018-06-03 18:38:11

标签: r filter datatables shiny dplyr

。我有一个由100个样本组成的数据帧。有三列,一个url链接,第二个是url链接的名称或标题,第三个日期。我想在闪亮的界面中显示所有这些标题。单击可将用户引导至相应的链接页面。 在选定日期过滤样本。但是我收到了错误

UseMethod错误:没有适用的方法来过滤_'适用于类" c的对象(' datatables',' htmlwidget')"请帮助

以下是代码

    df$link <- paste0("<a href='", df$url, "' target='_blank'>", df$heading, "</a>")

ui <- fluidPage( dateRangeInput('dateRange',
                                label = 'Filter news by date',
                                start = as.Date('2001-01-01') , end = as.Date('2018-06-01')),
  DT::dataTableOutput("table")
   )

server <- function(input, output) {

  output$table <- DT::renderDataTable({
    DT::datatable(df[, c("link", "Date"), drop = FALSE], escape = FALSE) %>%
     dplyr::filter(df$Date >= input$dateRange[1] & df$Date <= input$dateRange[2])
  })

}

1 个答案:

答案 0 :(得分:1)

您将结果从DT::datable传送到filter,这不是类似数据框的对象。

您可能希望将filter应用于数据框,然后将结果传递给datatable,如下所示:

server <- function(input, output) {
  output$table <- DT::renderDataTable({
    DT::datatable(
      df[, c("link", "Date"), drop = FALSE] %>%
        dplyr::filter(df$Date >= input$dateRange[1] & df$Date <= input$dateRange[2]),
      escape = FALSE
    )
  })
}