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 的目的。不过,还是希望这个问题对其他人有帮助。