2015-01-16 49 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查看更新 –