我想以文本或表格的形式显示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
或其他类似内容。
感谢您的任何提示!
干杯
答案 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
})
}
)