Shiny R DT:在第二个表格中显示过滤的列标准(范围/选项)或文本

时间:2016-02-09 08:17:09

标签: r shiny dt

我想以文本或表格的形式显示Shiny R中数据表DT的过滤列标准(以便用户在浏览ShinyApp中的其他标签时知道他/她过滤了什么)。

这是一个非常简单的例子(没有标签)只是为了显示:

library(shiny)
library(DT)
library(ggplot2)

x <- as.numeric(1:1000000)
y <- as.numeric(1:1000000)
data <- data.frame(x,y)

shinyApp(
  ui = fluidPage(dataTableOutput('tableId'),
                 plotOutput('plot1')),
  server = function(input, output) {    
    output$tableId = renderDataTable({
      datatable(data, options = list(pageLength = 100, lengthMenu=c(100,200,300,400,500,600)))
    })
    output$plot1 = renderPlot({
      filtered_data <- data[input$tableId_rows_all, ]
      ggplot(data=filtered_data, aes(x=x,y=y)) + geom_line()
    })
  }
)

例如如果我们从10-100 过滤x列,是否可以将其显示为图表下的文本(以及我在原始ShinyApp中的另一个标签中的文本tabsetPanel):X column has been filtered 10-100或其他类似内容。

感谢您的任何提示!

干杯

1 个答案:

答案 0 :(得分:2)

您可以从tableId_search_columns

获取此类信息

例如

library(shiny)
library(DT)
library(ggplot2)

x <- as.numeric(1:10000)
y <- as.numeric(1:10000)
data <- data.frame(x,y)

shinyApp(
  ui = fluidPage(dataTableOutput('tableId'),
                 plotOutput('plot1'),
                 verbatimTextOutput("txt")),
  server = function(input, output) {    
    output$tableId = renderDataTable({
      datatable(data,filter="top", options = list(pageLength = 100, lengthMenu=c(100,200,300,400,500,600)))
    })
    output$plot1 = renderPlot({

      filtered_data <- data[input$tableId_rows_all, ]
      ggplot(data=filtered_data, aes(x=x,y=y)) + geom_line()
    })
    output$txt=renderText({
      aa=""
      for ( i in 1:length(input$tableId_search_columns)){
        if(input$tableId_search_columns[[i]]!=""){
        aa=paste0(aa,"\n","column ",i, "filter ",input$tableId_search_columns[[i]])}
      }
      aa
    })
  }
)