0

我想以文本或表格的形式在 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或类似的东西。

感谢您的任何提示!

干杯

4

1 回答 1

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
    })
  }
)
于 2016-02-09T08:37:27.620 回答