2015-01-16 176 views
3

我想添加第二个inputpanel在我的闪亮应用程序中,内容取决于第一个inputpanel选项的输入,我试图使用condional面板没有运气。如何将有条件的面板设置为闪亮的selectinput?


ui.R

TO < - read.csv( “〜/ TO/TO/TO.csv”,月= “;”) 库(有光泽)

shinyUI( fluidPage(

#应用标题 titlePanel( “dasboard”),

#边栏与仓

的数的滑块输入

sidebarLayout(

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))))) 

...


,我发现的解决方案是创建一个conditionalPanel第一个输入面板的每一个值,但在第二输入面板产量也只有正确的第一价值。

有没有人有解决方案?

+0

请出示到目前为止,你所拥有的... –

+0

正如你可以看到我还在寻找一个解决方案 – user2486276

回答

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包装在内像这样:

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))) 
    }) 
    } 
)) 
+0

嗨上面的代码,上面关于第二个帖子,如果我想要把选择虹膜和mtcars时有多个selectInputs和滑块,请你帮忙。 –

+0

@AshminKaul查看更新 –