【问题标题】:How to set a conditional panel to a selectinput in shiny?如何将条件面板设置为闪亮的选择输入?
【发布时间】:2015-03-14 23:25:51
【问题描述】:

我试图在我闪亮的应用程序中添加第二个输入面板,其内容取决于第一个输入面板选择的输入,我尝试使用条件面板但没有运气。


ui.R

TO

shinyUI(fluidPage(

# 应用程序标题 标题面板(“仪表板”),

# 带有滑动条输入箱数的侧边栏

侧边栏布局(

sidebarPanel(
  selectInput("country", label = h4("Pays"), 
              choices = levels(as.factor(TO$Pays))),
  conditionalPanel(
    condition = "input.country == 'Allemagne'",        
    selectInput("to", label = h4("Tour opérateur"), 
              choices = levels(as.factor(as.character(TO[as.character(TO$Pays)=="Allemagne",]$TO))))),
  conditionalPanel(
    condition = "input.country == 'Angleterre'",        
    selectInput("to", label = h4("Tour Operator"), 
                choices = levels(as.factor(as.character(TO[as.character(TO$Pays)=="Angleterre",]$TO)))))

...


我找到的解决方案是为第一个 inputPanel 的每个值创建一个 conditionalPanel 但是第二个 inputPanel 输出是否只对第一个值正确。

有人有解决办法吗?

【问题讨论】:

  • 请展示你目前所获得的...
  • 正如您在代码上方看到的,我仍在寻找解决方案

标签: r shiny shiny-server


【解决方案1】:

我知道下面的方法不是通过条件面板,因为我认为通过下面给出的示例来实现它会更简单。

首先你可以使用updateSelectInput 来更新你的条目,像这样

rm(list = ls())
library(shiny)
runApp(list(
  ui = bootstrapPage(
    selectInput('data', 'Data', c('mtcars', 'iris')),
    selectInput('Cols', 'Columns', "")
  ),
  server = function(input, output, session){
    outVar <- reactive({
      mydata <- get(input$data)
      names(mydata)
    })
    observe({
      updateSelectInput(session, "Cols",choices = outVar()
      )})
  }
))

您可以使用renderUI 创建selectInput 并像这样填充它的其他方式:

rm(list = ls())
library(shiny)
runApp(list(
  ui = bootstrapPage(
    selectInput('data', 'Data', c('mtcars', 'iris')),
    uiOutput('columns')
  ),
  server = function(input, output){
    output$columns <- renderUI({
      mydata <- get(input$data)
      selectInput('columns2', 'Columns', names(mydata))
    })
  }
))

编辑:如何在renderUI 中添加多个小部件 您需要将 divs 包裹在 tagList() 中,如下所示:

rm(list = ls())
library(shiny)
runApp(list(
  ui = bootstrapPage(
    selectInput('data', 'Data', c('mtcars', 'iris')),
    uiOutput('columns')
  ),
  server = function(input, output){
    output$columns <- renderUI({
      mydata <- get(input$data)
      tagList(
      selectInput('columns2', 'Columns', names(mydata)),
      selectInput('columns3', 'Columns 2', names(mydata)))
    })
  }
))

【讨论】:

  • 您好,关于上面的第二篇文章,如果我想在选择 iris 和 mtcars 时放置多个 selectInputs 和滑块,请您帮忙。
猜你喜欢
  • 1970-01-01
  • 2017-05-19
  • 2021-03-09
  • 2017-04-29
  • 2014-03-03
  • 2022-11-23
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多