【问题标题】:How to display data in MainPanel based on user selection in Shiny R?如何根据 Shiny R 中的用户选择在 MainPanel 中显示数据?
【发布时间】:2019-11-29 06:21:01
【问题描述】:

我的数据框如下所示,我想构建ShinyApp,这样当用户从 SidebarPanel 中选择系统时,只有信息。与所选系统相关的显示在mainpanel 中。目前,下面的应用程序在主面板中显示整个数据表。我是闪亮的新手,我不确定如何在 mainpanel 中隐藏数据表。

Shiny 中是否有可用的功能?

提供代码解释

数据帧

> df <- data.frame("Users" =c('A',"B","A",'C','B'), "Date" = c('17 Mar 2019','15 Mar 2019','11 Mar 2019','20 Apr 2019',"21 Apr 2019"), "Systems" = c("Sys1", "Sys1","Sys2","Sys3","Sys4"), stringsAsFactors = FALSE)
> df
  Users        Date Systems
1     A 17 Mar 2019    Sys1
2     B 15 Mar 2019    Sys1
3     A 11 Mar 2019    Sys2
4     C 20 Apr 2019    Sys3
5     B 21 Apr 2019    Sys4

应用到目前为止..

library(shiny)
library(DT)
library(dplyr)
ui <- basicPage(
  h2("Different Systems"),
  sidebarLayout(
    sidebarPanel(
      selectInput('slct',"Select System",choices = df$Systems)
  ),
  mainPanel(
  DT::dataTableOutput("mytable")
)
)
)
server <- function(input, output) {
  #df$system<-rownames(df$Systems)
  output$mytable = DT::renderDataTable({
    df %>%
      filter(stringr::str_detect(Systems, as.character(input$slct)))

  })

}

shinyApp(ui, server)

【问题讨论】:

    标签: r shiny shiny-server shinyapps


    【解决方案1】:

    选项 1:

    您可以使用req() 确保input$slct 必须可用于要显示的表格。

    您只需要更改您的服务器代码:

    server <- function(input, output) {
        #df$system<-rownames(df$Systems)
        output$mytable = DT::renderDataTable({
            req(input$slct) # add this line
            df %>%
                filter(stringr::str_detect(Systems, as.character(input$slct)))
    
        })
    
    }
    

    选项 2:

    您可以使用validate()need 提出要求并建议用户输入。

    server <- function(input, output) {
        #df$system<-rownames(df$Systems)
        output$mytable = DT::renderDataTable({
            validate(need(input$slct,"Please Select System")) # add this line
            df %>%
                filter(stringr::str_detect(Systems, as.character(input$slct)))
    
        })
    
    }
    

    阅读这两篇文章了解更多信息:

    1. https://shiny.rstudio.com/articles/validation.html
    2. https://shiny.rstudio.com/articles/req.html

    【讨论】:

      猜你喜欢
      • 2021-07-09
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2019-11-11
      • 1970-01-01
      • 2020-06-14
      • 2021-07-03
      相关资源
      最近更新 更多