Вы можете использовать пакет DT
. В базовой версии он дает вам фильтры.
Unit_Price <- c(60, 49, 40, 61, 64, 60, 59, 54, 62, 69, 70, 42,
56,61, 61, 61, 58, 51, 48, 65, 49, 49, 41, 48, 52, 46,59, 46, 58,
43)
Material <- c("tas", "sa", "qld", "nsw", "nsw", "nt", "wa",
"wa","qld", "vic", "nsw", "vic", "qld", "qld", "sa", "tas","sa",
"nt", "wa", "vic", "qld", "nsw", "nsw", "wa","sa", "act", "nsw",
"vic", "vic", "act")
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(selectInput("x","Supplier name",choices =
c("ABC","DEF")),
checkboxInput("mean","Mean Prices are"),
tableOutput("mean")),
mainPanel(h6("Here it is"),
DT::dataTableOutput("message")
)
)
)
server <- function(input, output, session) {
data <- reactive({
if (input$x == "ABC") {
data.frame(Unit_Price, Material)
} else if (input$x == "DEF")
{
data.frame(Material=c("A","B"), Unit_Price=c(7,8))
}
})
output$message <- DT::renderDT({
data()
})
output$mean <- renderTable(rownames = TRUE, {
req(input$mean)
df <- data()
tapply(df$Unit_Price, df$Material, mean)
})
}
shinyApp(ui, server)
Вы также можете использовать аргумент filter
, чтобы получить дополнительные параметры фильтрации. Просто замените следующий код:
output$message <- DT::renderDT({
data()
},filter = "top")