R shinydashboard - 根据用户的输入过滤数据表
R shinydashboard - Filter a datable based on the input of a user
问题如下:
“如何根据用户在 shinydashboard 中的输入过滤数据表?”
查看下面的可重现代码。在 'user' 选项卡中,我允许用户根据物种类型(例如 setosa 或 versicolor)过滤标准鸢尾花数据集。但是我无法显示过滤后的数据表。
为了解决我的问题,我查看了多个post:
然而,没有任何成功。我希望你们中的一位能帮助我。
这是我在 Whosebug 上的第一个 post。我希望它符合 Whosebug 的规则。如果没有,请告诉我需要更改的内容。
librarian::shelf(datasets, dplyr, DT, shiny, shinydashboard)
data("iris")
iris
ui <- dashboardPage(
skin = "red",
dashboardHeader(title = "Shiny dashboard", titleWidth = 300),
dashboardSidebar(
width = 300,
sidebarMenu(
menuItem("1. Administrator", tabName = "administrator", icon = icon("tools")),
menuItem("2. User", tabName = "user", icon = icon("user"))
)
),
dashboardBody(
tabItems(
tabItem("administrator",
div(p("In development"))
),
tabItem("user",
selectInput("species", "Select a species", iris$Species),
dataTableOutput("irisspecies"),
downloadButton(outputId = "download", label = "Download .PDF"))
)
)
)
server <- function(input, output) {
}
shinyApp(ui, server)
我实际上找到了一个非常简单的解决方案。
关于服务器端,只需添加:
server <- function(input, output) {
output$select_species <- renderDataTable({
iris %>%
filter(Species == input$species)
})
}
回答我自己的问题违背了 Whosebug 的目的。不过,还是希望这个问题对其他人有帮助。
问题如下:
“如何根据用户在 shinydashboard 中的输入过滤数据表?”
查看下面的可重现代码。在 'user' 选项卡中,我允许用户根据物种类型(例如 setosa 或 versicolor)过滤标准鸢尾花数据集。但是我无法显示过滤后的数据表。
为了解决我的问题,我查看了多个post:
然而,没有任何成功。我希望你们中的一位能帮助我。
这是我在 Whosebug 上的第一个 post。我希望它符合 Whosebug 的规则。如果没有,请告诉我需要更改的内容。
librarian::shelf(datasets, dplyr, DT, shiny, shinydashboard)
data("iris")
iris
ui <- dashboardPage(
skin = "red",
dashboardHeader(title = "Shiny dashboard", titleWidth = 300),
dashboardSidebar(
width = 300,
sidebarMenu(
menuItem("1. Administrator", tabName = "administrator", icon = icon("tools")),
menuItem("2. User", tabName = "user", icon = icon("user"))
)
),
dashboardBody(
tabItems(
tabItem("administrator",
div(p("In development"))
),
tabItem("user",
selectInput("species", "Select a species", iris$Species),
dataTableOutput("irisspecies"),
downloadButton(outputId = "download", label = "Download .PDF"))
)
)
)
server <- function(input, output) {
}
shinyApp(ui, server)
我实际上找到了一个非常简单的解决方案。
关于服务器端,只需添加:
server <- function(input, output) {
output$select_species <- renderDataTable({
iris %>%
filter(Species == input$species)
})
}
回答我自己的问题违背了 Whosebug 的目的。不过,还是希望这个问题对其他人有帮助。