2017-12-07 7 views
0

条件付きパネルを使用してShinyアプリを動的に構築しています。パネルが基づいている状態は起動時に評価されないようです。パネルはデフォルトで表示され、一部の操作の後にのみ消えます。条件が満たされていなくても、パネルが表示されます(input.select1.length = 0、1未満です)。光沢のある条件付きパネルが起動時に評価されない

最小限の作業例:

Server.R:

shinyServer(function(input, output,session){ 
    output$selectInput1 <- renderUI({ 
    selectInput(
     inputId = "select1", 
     label = "Select", 
     choices = c('1','2','3'), 
     selected = NULL, 
     multiple = TRUE 
    ) 
    }) 
}) 

UI.R:@porkchopが指摘したように

dashboardPage(
    title = "", 

    ## Header content + dropdownMenu 
    dashboardHeader(
    title = tags$b(""), 
    titleWidth = 250 
), 

    ## Sidebar content 
    dashboardSidebar(
    width = 250, 
    sidebarMenu(
     id = "tabs", 
     menuItem("tab1", tabName = "tab", icon = icon("table")) 
    ) 
), 

    ## Body content 
    dashboardBody(
    tabItems(
     tabItem(tabName = "tab", 
     div(
      div(
      style="float: left; padding-left: 20px; padding-right: 20px; width: 350px; background-color: #F4F4F4; height: calc(100vh - 50px) !important;", 
      uiOutput('selectInput1') 
     ), 
      div(
      conditionalPanel(
       condition = "input.select1.length > 1", 
       p('hi') 
      ) 
     ) 
     ) 
    ) 
    ) 
) 
) 
+0

ページを右クリックして、あなたが 'input.select1.length'を評価するとき、それは文句ことがわかりますinspect''クリックしてください。それは適切なコマンドではないようです。 'jQuery' https://api.jquery.com/length/ –

+0

Thx @PorkChopを試してみてください。私はそれを変更:conditionalPanel( 条件= "!typeof演算input.select1.length == '未定義'"、 conditionalPanel( 条件= "input.select1.length> 0"、 P( 'こんにちは') ) )でも同じエラーです。第二の条件を評価しないための最初の条件は何でしょうか? – Dendrobates

+0

別の 'renderUI'を作成する方が簡単かもしれません –

答えて

0

、あなたがのrenderUI機能で条件を作成することができますserver.R

Server.R:

shinyServer(function(input, output,session){ 
    output$selectInput1 <- renderUI({ 
    selectInput(
     inputId = "select1", 
     label = "Select", 
     choices = c('1','2','3'), 
     selected = NULL, 
     multiple = TRUE 
    ) 
    }) 
    output$panel1 <- renderUI({ 
    if(!is.null(input$select1) && length(input$select1) > 0){ 
     condition1 = 'true' 
    } else { 
     condition1 = 'false' 
    } 
    conditionalPanel(
     condition1, 
     p('hi') 
    ) 
    }) 
}) 

UI.R:

dashboardPage(
    title = "", 

    ## Header content + dropdownMenu 
    dashboardHeader(
    title = tags$b(""), 
    titleWidth = 250 
), 

    ## Sidebar content 
    dashboardSidebar(
    width = 250, 
    sidebarMenu(
     id = "tabs", 
     menuItem("tab1", tabName = "tab", icon = icon("table")) 
    ) 
), 

    ## Body content 
    dashboardBody(
    tabItems(
     tabItem(tabName = "tab", 
     div(
      div(
      style="float: left; padding-left: 20px; padding-right: 20px; width: 350px; background-color: #F4F4F4; height: calc(100vh - 50px) !important;", 
      uiOutput('selectInput1') 
     ), 
      div(
      uiOutput('panel1') 
     ) 
     ) 
    ) 
    ) 
) 
) 
関連する問題