【问题标题】:[RShiny][Shinydashboard]Show/Hide different input panel based on another input[R Shiny][Shinydashboard]根据另一个输入显示/隐藏不同的输入面板
【发布时间】:2021-12-23 14:35:42
【问题描述】:

我之前做过闪亮的App,但是一段时间不写代码就生锈了。

这是我的目标:

我正在使用 shinydashboard 设计一个动态 UI。我有一个 selectInput(例如 A、B、C 和 D)。 我想让应用程序执行的是,根据用户选项(A、B、C 或 D),它将动态弹出另一个输入面板(一个具有特定“numericInput”或“selectInput”集合的面板s),因为每个 A/B/C/D 选项定义了不同的情况。

我无法提供自己的代码(因为我什至不知道如何开始),但我在这里找到了一些带有示例代码的页面:

An example of dynamic UI

是页面10.2.1节中使用tabsetPanel和updateTabsetPanel的例子。

我检查了他们的应用程序链接,这似乎正是我想要的,但我怀疑一些代码已经被 Shiny 耗尽,因为当我将代码复制并粘贴到我的 R 脚本时,我无法运行它没有错误。

如果您能提供帮助,无论是如何正确调整该页面上的代码,或者如果有任何其他方法,我们将不胜感激。

【问题讨论】:

    标签: r shiny shinydashboard


    【解决方案1】:

    最简单的方法是使用uiOutputrenderUI

    library(shiny)
    ui <- fluidPage(
      sidebarLayout(
        sidebarPanel(
          selectInput("controller", "Show", choices = c("A", "B", "C", "D")),
          uiOutput("newSelect")
        ),
        mainPanel(
          textOutput("textId")
        )
      )
    )
    
    server <- function(input, output, session) {
      
      output$textId <- renderText({
        input$controller
      })
      
      output$newSelect <- renderUI({
        if(input$controller == "B"){
          selectInput("controller2", "New Select", choices = c(1:4))
        } else {
          NULL
        }
      })
      
    }
    
    
    shinyApp(ui,server)
    

    请记住,如果应用变得过于复杂,这可能会使您的应用变得迟钝。如果是这样,你可以使用一些js有条件地显示或隐藏其他selectInputs

    【讨论】:

      猜你喜欢
      • 2019-01-27
      • 2021-09-08
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2016-05-10
      • 2017-06-27
      • 2018-07-08
      • 2012-06-15
      相关资源
      最近更新 更多